找不到中心目录错误

时间:2015-12-15 14:08:54

标签: c#

我正在尝试从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文件移动到不同的位置,但我仍然面临同样的错误。

3 个答案:

答案 0 :(得分:15)

一个例外陈述:

  

找不到中央目录

表示可能出现以下情况之一:

  1. 文件已损坏
  2. 该文件实际上不是.xslx文件(您确定它不是.xls文件吗?)
  3. 您用来阅读文件的库有错误
  4. 从您的代码中看起来您正在使用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文件受密码保护,您还将收到此错误。