当我尝试使用 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.exe和AccessRuntime.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。
我已经为解析器编写了一个小程序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.exe和AccessRuntime.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。