Je développais une application qui lisait les données d’un fichier Excel, mais lorsque j’essayais de l’ouvrir, une exception était levée si le fichier source était enregistré avec le format xls (Le fichier contient une erreur de donnée corrompue lors de l’ouverture de la feuille Excel avec. OpenXML). En effet, lorsque je sauvegarde ce fichier au format xlsx, cela fonctionne bien. aidez-moi s'il vous plaît à résoudre ce problème.
Vous ne pouvez pas lire les fichiers xls avec OpenXML.
La solution de Microsoft consiste à lire le fichier xls avec Office Interop (mais l'utilisation d'Interop n'est pas recommandée sur le serveur), puis à transférer les données d'Interop à OpenXML.
Une autre solution consiste à utiliser une bibliothèque Excel telle que EasyXLS et à convertir ces deux formats de fichier Excel:
ExcelDocument workbook = new ExcelDocument();
workbook.easy_LoadXLSFile("Excel.xls");
workbook.easy_WriteXLSXFile("Excel.xlsx");
Plus d’informations sur la conversion de xls en xlsx .
Je ne suis pas tout à fait sûr de savoir pourquoi vous devez convertir le fichier et pourquoi vous ne lisez pas simplement le fichier xls, en utilisant une technologie différente de celle d'OpenXML, bien sûr.
Utilisez la DLL gratuite Spire.XLS disponible via NuGet .
Échantillon:
Workbook workbook = new Workbook();
Workbook.LoadFromFile("Input.xls");
Workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2013);
XLS est l'ancien format de fichier Excel. XSLX est le nouveau format enregistré sous OpenXML. XSLX est en fait un fichier Zip avec les divers composants stockés sous forme de fichiers. Vous ne pouvez pas simplement renommer le fichier pour le convertir au nouveau format. Pour enregistrer le fichier au format XSLX, vous devez enregistrer le fichier au format Excel 2010+.
Si vous utilisez Excel interop, il s'agit d'une option de la méthode SaveAs.
pour plus d'informations, consultez la fonction: _Workbook.SaveAs, méthode
et la propriété: FileFormat:
Optional Object.
The file format to use when you save the file. For a list of valid choices,
see the FileFormat property. For an existing file, the default format is the
last file format specified; for a new file, the default is the format of the
version of Excel being used.
msdn info here: https://msdn.Microsoft.com/en-us/library/Microsoft.office.interop.Excel._workbook.saveas(v=office.11).aspx
Pour une lecture fiable des fichiers XLS, vous pouvez utiliser ExcelDataReader , une bibliothèque légère et rapide écrite en C # pour la lecture de fichiers Microsoft Excel. Il supporte l’importation de fichiers Excel jusqu’à la version 2.0 d’Excel (sortie en 1987!)
Vous pouvez également utiliser une API de conversion de fichiers telle que Zamzar . Ce service existe depuis plus de 10 ans et fournit une simple API REST pour la conversion de fichier - il prend en charge la conversion de XLS à XLSX. Vous pouvez l'utiliser en C #. Il comporte des fonctionnalités supplémentaires, telles que vous permettant d'importer et d'exporter des fichiers vers et à partir d'Amazon S3, des serveurs FTP, etc.
Divulgation complète: Je suis le développeur principal de l'API Zamzar.