当我尝试使用 OLE DB 读取 Excel 时,所有值都是空的

When I try read Excel with OLE DB all values are empty

我已经为解析器编写了一个小程序excel。只有在执行它之前我手动打开 Excel 文件时它才能正常工作(这不是很奇怪吗?)。 IE。首先我打开 excel 文件,然后我执行程序,我得到了很好的结果

如果我在执行它之前没有打开 excel,我会得到空值

我的连接字符串(excel 文件扩展名为 .XLSX):

connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                   "Data Source=" + path + "\" + f.Name + ";" +
                   "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";

我打开与 oleDB 连接的代码:

using (OleDbConnection cnn = new OleDbConnection(connectionString))
{
    cnn.Open();
    ...
    String sql = "SELECT * FROM [" + sheetNames[i] + "]";
    OleDbDataAdapter da = new OleDbDataAdapter(sql, cnn);
    DataTable dt = new DataTable();
    da.Fill(dt); // Now 'dt' should has all data
}

另外,我安装了AccessDatabaseEngine.exeAccessRuntime.exe

很明显,我的目的是运行程序不用手动打开文件。有什么建议吗?

感谢您的宝贵时间。

当我试图让 OleDb 和 Excel 很好地协同工作时,我发现这真的很痛苦。幸运的是,我找到了一个更好的方法:EPPlus

EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).

开源、功能丰富且易于使用。如果可能,请使用它而不是 OleDb。