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)
{
....