29

Below is my code to read excel file.

Code.

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");

When i run the code it throw a runtime error.

Error

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

Appreciated if anyone could advice/help on this. Thanks.

chinna_82
  • 6,353
  • 17
  • 79
  • 134

3 Answers3

45

Epplus does not handle .xls (BIFF8 format) files as far as i know.

It handles the newer .xlsx (Open Office Xml) format.

You can use excellibrary though as it works for xls files.

scartag
  • 17,548
  • 3
  • 48
  • 52
  • 1
    Nice library. Not fast, but good not to worry about Com-foolery – Jack Jan 10 '19 at 02:30
  • Nice library, does it support both .xls and .xlsx? and another question is is it similar to `ExpertXls.ExcelLibrary`? – Iswar Jun 13 '19 at 07:40
1

In the date of this post EPPLUS (v4.4.1) seems to handle xls files just like it does with xlsx:

Here is an example:

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

also tested your code:

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");

and it works without any issues.

Yahya Hussein
  • 8,767
  • 15
  • 58
  • 114
  • The resulting file is still in OpenXML Format, just with a different fileextension. Excel will tell you when the file is opened. Also the GitHub page also does not mention any xls support. – FrankM Jun 20 '18 at 13:38
0

You need to convert XLS to XLSX Format before reading the Excel sheet using EPPlus. You can find more information in this post.

Avinash
  • 11
  • 3