我有一个 .xlsx 文件,我已将文件扩展名更改为 .xls ,我正在尝试使用Gembox库阅读它。问题是,当我尝试使用GemboxExcel.LoadXls(fileName);
方法读取文件时,我收到以下错误:
异常消息:分析失败:读取错误:文件无效 OLE2复合文件。异常堆栈跟踪:System.Exception:Analysis 失败:读取错误:文件不是有效的OLE2复合文件。 ---> GemBox.CompoundFileException:读取错误:文件不是有效的OLE2 复合文件。在GemBox.ReadData.ReadHeader(BinaryReader br, 的ArrayList和放大器; masterAllocationTable)at GemBox.ReadData..ctor(Ole2CompoundFile ole2File,Stream inputStream)
在GemBox.Ole2CompoundFile.Load(Stream stream,Boolean loadOnDemand)
在GemBox.Spreadsheet.ExcelFile.ReadStreamHelper(ExcelFile excelFile, Stream inputStream,Boolean readSummaryStreams,Byte []& ss,Byte []& dss,Boolean readMacros,Byte []& ctls,Byte []& compObj,Ole2Storage& mStorage,String fileName)at GemBox.Spreadsheet.ExcelFile.LoadXls(String fileName,XlsOptions xlsOptions
问题是如果我从Excel保存文件(Microsoft Excel - >另存为 - > .xls文件)然后我在我的程序中打开文件并使用GemboxExcel.LoadXls(fileName);
方法,它工作正常。
我已在我的计算机上安装了Microsoft Office Compatibility Pack,但它不起作用。
有人遇到过这个问题吗?
答案 0 :(得分:2)
只需重命名文件扩展名(例如从“Book1.xlsx”更改为“Book1.xls”)即可更改此文件的内容,也不会更改其中使用的文件格式。
您看到这些格式非常不同,XLS是基于二进制的文件格式,而XLSX是基于XML的文件格式。我不确定你为什么要将它重命名为.XLS扩展名,但是现在你有一个文件格式和扩展名不匹配的文件,你需要将它作为XLSX文件加载(因为它仍然是一个XLSX文件格式)。
ExcelFile file = new ExcelFile();
file.LoadXlsx("Book1.xls", XlsxOptions.None);
如果要将XLSX文件转换为XLS文件,请尝试以下操作:
ExcelFile file = new ExcelFile();
file.LoadXlsx("Book1.xlsx", XlsxOptions.None);
file.SaveXls("Book1.xls");
这与“Microsoft Excel - >另存为 - > .xls文件”操作具有相同的效果。