Codeplex Excel Data Reader выдает пустой набор данных для Excel 2010

Я использую Codeplex Excel Data Reader для чтения Excel. Проблема, с которой я сталкиваюсь, заключается в том, что он читает документы Excel 97-2003 без каких-либо затруднений, но при чтении документов Excel 207-2010 с использованием ExcelReaderFactory.CreateOpenXmlReader(stream) выводится пустой набор данных. Кто-нибудь сталкивался с этой проблемой. И есть ли у кого-нибудь решение для этого?

Метод чтения заключается в следующем

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

1 ответ

Решение

8000401a указывает, что это было связано с Run As Logon Failure,

Держитесь подальше от серверной автоматизации офиса. Или используйте XML для работы с электронными таблицами Excel на сервере.

По вопросам поддержки с Excel Data Reader:

Дизайн и использование великолепны. Пока что единственная проблема, с которой я столкнулся, - это некорректный синтаксический анализ определенного файла XLSX (чтение неправильных таблиц, значения ячеек неправильной выборки и т. Д.). Чтобы решить эти проблемы, мне пришлось пересобрать Excel.dll, используя последнюю версию SharpZipLib с http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx. Как уже говорили другие, проект нуждается в обновлении, но все еще хорош.

Или просто используйте стандартный метод 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)
     {
....
Другие вопросы по тегам