我正在尝试从excel文件中读取数据。
FileStream stream = File.Open (@"C:\Temp\F1\SMRPAC974-00024COMINVDETEXTRACT.xlsx", FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();
excelReader.Close();
string csvData = "";
int row_no = 0;
while (row_no < result.Tables[0].Rows.Count)
{
for (int i = 0; i < result.Tables[0].Columns.Count; i++)
{
csvData += result.Tables[0].Rows[row_no][i].ToString() + ";";
}
row_no++;
csvData += "\n";
}
我目前正在处理的问题是“#34;无法找到中心目录&#34;”。我不知道这意味着我甚至尝试将excel文件移动到不同的位置,但我仍然面临同样的错误。
答案 0 :(得分:15)
一个例外陈述:
找不到中央目录
表示可能出现以下情况之一:
.xslx
文件(您确定它不是.xls
文件吗?)从您的代码中看起来您正在使用ExcelDataReader并尝试打开XML格式(xlsx
)文件。您确定该文件实际上不是某个人错误命名为.xls
的{{1}}文件吗?您可以使用以下方法检查:
.xlsx
而不是:
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
答案 1 :(得分:2)
检查您使用的天气.xlsx或.xls文件。
如果您使用的是.xlsx,请使用
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
如果您使用.xls,请使用
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
希望它有所帮助。它对我有用。
答案 2 :(得分:0)
如果Excel文件受密码保护,您还将收到此错误。