我是开发从一个excel文件中读取数据的应用程序,但是当我尝试打开它,如果源文件保存与XLS格式(与OpenXML的打开Excel工作表时,文件包含损坏的数据错误)引发了异常。的确,当我保存这个文件与XLSX格式它工作正常。请帮我解决这个问题。
使用提供免费Spire.XLS DLL通过NuGet。
样品:
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xls");
workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2013);
你不能阅读的OpenXML的XLS文件。
从微软的解决方案是阅读与Office互操作的XLS文件(但不建议互操作在服务器上使用),一步OpenXML与互操作步骤传输数据。
另一种解决方案是使用Excel库像EasyXLS这两个Excel文件格式之间进行转换:
ExcelDocument workbook = new ExcelDocument();
workbook.easy_LoadXLSFile("Excel.xls");
workbook.easy_WriteXLSXFile("Excel.xlsx");
查找有关converting xls to xlsx的更多信息。
我不明白为什么你需要转换的文件,为什么你不只是读XLS文件,使用不同的技术,那么OpenXML的,肯定的。
XLS是早期Excel文件格式。 XSLX存储为OpenXML的较新的格式。 XSLX实际上是存储在它的文件的各种组件的zip文件。你不能简单地重命名文件,以获得它变成新的格式。为了节省XSLX文件你必须将文件保存到Excel的2010+格式。
如果你正在使用Excel互操作则是在另存为方法的选择。
更多的信息查询功能:_Workbook.SaveAs方法
和属性:的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.
为了可靠地读取,你可以使用ExcelDataReader这是一个用C#读取Microsoft Excel文件的轻型和快速库的XLS文件。它支持的Excel导入文件回的Excel 2.0版本的所有方式(在1987年发布了!)
另外,您可以使用一个文件转换API像Zamzar。这项服务已经有10年以上,并提供了文件转换一个简单的REST API - 它支持XLS到XLSX转换。您可以在C#中使用它,它有一个像允许您导入和导出文件,并从亚马逊S3,FTP服务器等额外的功能
披露:我为Zamzar API的首席开发人员。