web-dev-qa-db-ja.com

EpplusがExcelファイルを読み取らない

以下は、Excelファイルを読み取るための私のコードです。

コード。

FileInfo newFile = new FileInfo("C:\\Excel\\SampleStockTakeExceptionReport.xls");
ExcelPackage pck = new ExcelPackage(newFile);
var ws = pck.Workbook.Worksheets.Add("Content");
ws.View.ShowGridLines = false;
ws.Cells["J12"].Value = "Test Write";
pck.Save();
System.Diagnostics.Process.Start("C:\\Excel\\SampleStockTakeExceptionReport.xls");

コードを実行すると、ランタイムエラーがスローされます。

エラー

System.Exception: Can not open the package. Package is an OLE compound document. If this is an encrypted package, please supply the password ---> System.IO.FileFormatException: File contains corrupted data.
   at MS.Internal.IO.Zip.ZipIOEndOfCentralDirectoryBlock.FindPosition(Stream archiveStream)
   at MS.Internal.IO.Zip.ZipIOEndOfCentralDirectoryBlock.SeekableLoad(ZipIOBlockManager blockManager)
   at MS.Internal.IO.Zip.ZipArchive..ctor(Stream archiveStream, FileMode mode, FileAccess access, Boolean streaming, Boolean ownStream)
   at MS.Internal.IO.Zip.ZipArchive.OpenOnStream(Stream stream, FileMode mode, FileAccess access, Boolean streaming)
   at System.IO.Packaging.ZipPackage..ctor(Stream s, FileMode mode, FileAccess access, Boolean streaming)
   at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess, Boolean streaming)
   at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess)
   at OfficeOpenXml.ExcelPackage.ConstructNewFile(Stream stream, String password)
   --- End of inner exception stack trace ---
   at OfficeOpenXml.ExcelPackage.ConstructNewFile(Stream stream, String password)
   at OfficeOpenXml.ExcelPackage..ctor(FileInfo newFile)
   at Report.Form1.ExportToExcel1(DataTable Tbl, String ExcelFilePath) in C:\SMARTAG_PROJECT\SUREREACH\Excel\Report\Report\Form1.cs:line 39

誰かがこれについてアドバイス/助けてくれたら感謝します。ありがとう。

25
chinna_82

私が知る限り、Epplusは.xls(BIFF8形式)ファイルを処理しません。

新しい.xlsx(Open Office Xml)形式を処理します。

excellibrary を使用できますが、xlsファイルで機能します。

39
scartag

EPPlusを使用してExcelシートを読み取る前に、XLSをXLSX形式に変換する必要があります。詳細については、 this postを参照してください。

0
Avinash

Epplusを使用する場合、Eplusのバージョンが.xlxをサポートしていない場合の解決策

注:.xlxファイルを.xlsxに変換できる場合は、以下の手順をスキップできます

ファイルの種類を変更できます。(office 10以降)

1> File
2> Save & Send
3> File Types > Change File Type
4> Workbook File Types > Select Workbook
5> Click Save As

上記の手順の後、ファイルは.xlsx形式で保存されます

0
kplshrm7

この投稿の日付では、EPPLUS(v4.4.1)はxlsxの場合と同じようにxlsファイルを処理しているようです:

以下に例を示します。

  using (var target = new ExcelPackage(new System.IO.FileInfo("D:\\target.xls")))
        {
            target.Workbook.Worksheets.Add("worksheet");
            target.Workbook.Worksheets.Last().Cells["A1:A12"].Value = "Hi";
            target.Save();
        }

あなたのコードもテストしました:

FileInfo newFile = new FileInfo("C:\\Excel\\SampleStockTakeExceptionReport.xls");
ExcelPackage pck = new ExcelPackage(newFile);
var ws = pck.Workbook.Worksheets.Add("Content");
ws.View.ShowGridLines = false;
ws.Cells["J12"].Value = "Test Write";
pck.Save();
System.Diagnostics.Process.Start("C:\\Excel\\SampleStockTakeExceptionReport.xls");

そして問題なく動作します。

0
Yahya Hussein