web-dev-qa-db-fra.com

Epplus ne lit pas le fichier Excel

Ci-dessous mon code pour lire le fichier Excel.

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

Quand je lance le code, il jette une erreur d'exécution.

Erreur

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

Apprécié si quelqu'un pouvait conseiller/aider à ce sujet. Merci.

20
chinna_82

Epplus ne gère pas les fichiers .xls (format BIFF8) pour autant que je sache.

Il gère le nouveau format .xlsx (Open Office Xml).

Vous pouvez utiliser excellibrary quoique cela fonctionne pour les fichiers xls.

34
scartag

Vous devez convertir le format XLS au format XLSX avant de lire la feuille Excel avec EPPlus. Vous pouvez trouver plus d'informations dans this post.

0
Avinash

Solution Si vous voulez utiliser Epplus et que votre version d’Eplus ne prend pas en charge .xlx  

Remarque: Si vous pouvez convertir votre fichier .xlx en .xlsx, vous pouvez ignorer les étapes ci-dessous.

Vous pouvez modifier le type de fichier .. (office 10 ou version ultérieure)

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

Après les étapes ci-dessus, votre fichier sera enregistré au format .xlsx

0
kplshrm7

À la date de cette publication, EPPLUS (v4.4.1) semble gérer les fichiers xls comme il le fait avec xlsx:

Voici un exemple:

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

également testé votre 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");

et cela fonctionne sans aucun problème.

0
Yahya Hussein