Codeplex Excel数据读取器为Excel 2010提供空数据集

我正在使用Codeplex Excel数据读取器来读取一个Excel。 我面对的问题是没有任何困难地读取Excel 97-2003文档,但是当使用ExcelReaderFactory.CreateOpenXmlReader(stream)读取Excel 207-2010文档时,它输出一个空的数据集。 有没有人遇到这个问题。 而且有没有任何解决scheme呢?

读取方法如下

private DataSet ReadExcel(string fileName, string extention) { DataSet dsData = null; FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read); IExcelDataReader excelReader = null; try { if (extention.Equals("xls")) { //1. Reading from a binary Excel file ('97-2003 format; *.xls) excelReader = ExcelReaderFactory.CreateBinaryReader(stream); } else { //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); // excelReader = ExcelReaderFactory.CreateBinaryReader(stream); } excelReader.IsFirstRowAsColumnNames = false; dsData = excelReader.AsDataSet(); } catch (Exception ex) { throw ex; } finally { if (excelReader != null) { excelReader.Close(); } } return dsData; } 

8000401a表示这是与Run As Logon Failure身份Run As Logon Failure

避开办公室的服务器端自动化 。 或者使用XML来处理服务器上的Excel电子表格。

根据Excel数据读取器的支持问题 :

devise和使用是伟大的。 到目前为止,只有问题是某些XLSX文件无法正确parsing(读错表,错误单元格值等)。 为了解决这些问题,我必须使用http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx中的最新SharpZipLib来重buildExcel.dll。 正如其他人所说,项目需要更新,但仍然不错。

或者只使用标准的micrsoft方式:

 Microsoft.Office.Interop.Excel.Application xlApp; Workbook wb = null; try { wb = xlApp.Workbooks.Open(filePath, false, true,5,null,"WrongPAssword"); } foreach (object possibleSheet in wb.Sheets) { var aSheet = possibleSheet as Worksheet; if (aSheet != null) { ....