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

时间:2015-10-09 08:03:37

标签: c# excel oledb

我已经完成了一个解析excel的小程序。只有在执行之前它才能正常工作我手动打开Excel文件(不是很奇怪吗?)。即首先我打开excel文件,第二个我执行程序,我得到了很好的结果

enter image description here

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

enter image description here

我的连接字符串(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.exe AccessRuntime.exe

显然,我的目的是运行程序而无需手动打开文件。有什么建议吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

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

  

EPPlus是一个.net库,使用Open Office Xml格式(xlsx)读取和写入Excel 2007/2010文件。

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