我正在尝试使用OleDbDataAdapter读取“.xlsx”文件。在回答之前,请阅读帖子的结尾。这是我正在使用的代码:
private DataTable ExtractDataFromFile(string fileName)
{
DataTable sheetData = new DataTable();
using (OleDbConnection conn = this.returnConnection(fileName))
{
try{
conn.Open();
OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select * from [Sheet1$]", conn);
sheetAdapter.Fill(sheetData);
}
catch(Exception e)
{
Console.WriteLine(e);
Console.ReadLine();
}
}
return sheetData;
}
private OleDbConnection returnConnection(string fileName)
{
return new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 12.0;");
}
但是我遇到了一个奇怪的错误。我必须查询的Excel文件已由客户端提供给我,当我尝试打开它时出现以下错误
External table is not in the expected format
以下是捕获: 我注意到如果我打开其中一个Excel文件而手动保存一次并关闭文件,那么我可以用我的程序查询该文件!
答案 0 :(得分:0)
您确定,您使用Microsoft Office创建了xlsx文件吗?此文件可能是一个打开的xml文档,但可能不是由MS Office创建的,因此MS oledbadapter无法读取它。如果你打开并保存它然后它可能会将它转换为MS版本的open xml然后oledbadapter可以读取它。
您可以查看DocumentFormat.OpenXml以读取xlsx文件。