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.
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.
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.
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
À 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.