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

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

在这里输入图像说明

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

在这里输入图像说明

我的连接string(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

显然,我的目的是运行程序而不必手动打开文件。 任何build议?

谢谢你的时间。

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

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

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