2

我正在使用 Codeplex Excel 数据阅读器来读取 excel。我面临的问题是它可以毫无困难地读取 Excel 97-2003 文档,但是当使用 ExcelReaderFactory.CreateOpenXmlReader(stream) 读取 Excel 207-2010 文档时,它输出的是一个空数据集。有没有人遇到过这个问题。有没有人对此有任何解决方案?

读取方法如下

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;
}
4

1 回答 1

1

8000401a 表示它与Run As Logon Failure.

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

根据Excel 数据阅读器的支持问题

设计和使用都很棒。到目前为止,我遇到的唯一问题是某些 XLSX 文件无法正确解析(读取错误的表格、错误的单元格值等)。为了解决这些问题,我不得不使用来自 http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx的最新 SharpZipLib 重建 Excel.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)
     {
....
于 2012-08-09T04:34:59.413 回答