2

私はExcelを読むためにCodeplexExcelDataReaderを使用しています。私が直面している問題は、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 に答える