当我尝试使用此代码读取 XML 工作表时出现奇怪的行为:
string CONNEC_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=No;IMEX=2;\"";
string fullFilePath = @"C:\Tmp\TestFile.xls";
using (OleDbConnection objCon = new OleDbConnection(string.Format(CONNEC_STRING, fullFilePath)))
{
using (OleDbCommand cm = new OleDbCommand("Select * From [MYCELLSRANGE]", objCon))
using (OleDbDataAdapter da = new OleDbDataAdapter(cm))
{
DataTable dt = new DataTable();
objCon.Open();
da.Fill(dt);
objCon.Close();
}
}
如果关闭 Excel 文件,我会收到错误消息“外部表格不是预期的格式。” 当我打开文件时,如果我执行上面的代码,它工作正常,我可以读取 MYCELLSRANGE 中包含的数据。 那么,有人对这个问题有任何想法吗? 感谢您的回答。
最佳答案
我相信这是因为 Jet 引擎使用 Excel 应用程序来解释文件。我自己遇到过这个问题。当您使用 Excel.dll 引用并从中解释 Excel 文件时,您必须创建一个新的应用程序实例来读取该文件。 Jet 只是做这件事来获取数据。我建议改为使用该代码。
- C# Corner example of how to Import Excel to a ListView
- C# Corner example of how to Create an Excel Worksheet in C#
- MSDN users discussing the same topic
如果您需要进一步的帮助,请告诉我。我已经在我的各种应用程序中使用 VB.NET 成功地做到了这一点。
关于C# 3.5 读取Excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3557858/