2013-01-03 15 views
18

Poniżej znajduje się mój kod do odczytu pliku Excela.Epplus nie czyta pliku Excela

Kod.

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

Po uruchomieniu kodu wyświetla błąd runtime.

Błąd

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 

widziane, jeśli ktoś mógłby doradzić/pomoc w tej sprawie. Dzięki.

Odpowiedz

30

Epplus nie obsługuje plików .xls (BIFF8), o ile wiem.

Obsługuje nowszy format .xlsx (Open Office Xml).

Możesz użyć excellibrary, ponieważ działa on dla plików xls.

+0

dzięki @scarttag .. – Rakeshyadvanshi

1

Na dzień sporządzenia niniejszego postu EPPLUS (v4.4.1) wydaje się obsługiwać pliki xls, tak jak to robi z XLSX:

Oto przykład:

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

testowano również swój kod:

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

i działa bez żadnych problemów.

Powiązane problemy