繁体   English   中英

找不到中央目录错误

[英]Cannot find central directory error

我正在尝试从 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";
}

我目前正在解决的问题是“找不到中央目录”的错误。 我不知道这意味着什么我什至尝试将 excel 文件移动到不同的位置,但我仍然面临同样的错误。

一个例外说明:

找不到中央目录

表示以下情况之一可能为真:

  1. 该文件已损坏
  2. 该文件实际上不是.xlsx文件(您确定它不是.xls文件吗?)
  3. 您用来读取文件的库存在错误

从您的代码看来,您正在使用ExcelDataReader并尝试打开 XML 格式 ( xlsx ) 文件。 确定该文件实际上不是有人错误命名为.xlsx.xls文件吗? 您可以使用以下方法进行检查:

IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);

代替:

IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

检查您使用的是 .xlsx 或 .xls 文件的天气。

如果您使用 .xlsx 则使用

     IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

如果您使用 .xls 然后使用

    IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);

希望能帮助到你。 它对我有用。

如果 Excel 文件受密码保护,您也会收到此错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM