我已经完成了一个解析excel的小程序。只有在执行之前它才能正常工作我手动打开Excel文件(不是很奇怪吗?)。即首先我打开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.exe 和 AccessRuntime.exe
显然,我的目的是运行程序而无需手动打开文件。有什么建议吗?
感谢您的时间。
答案 0 :(得分:2)
当我试图让OleDb和Excel一起玩得很好时,我发现这真的很痛苦。幸运的是,我找到了一个更好的方法:EPPlus
EPPlus是一个.net库,使用Open Office Xml格式(xlsx)读取和写入Excel 2007/2010文件。
开源,功能丰富且易于使用。如果可能的话,使用它而不是OleDb。