【问题标题】:Gembox error when reading an .xls file from .xlsx file从 .xlsx 文件读取 .xls 文件时出现 Gembox 错误
【发布时间】:2014-02-25 11:36:09
【问题描述】:

我有一个 .xlsx 文件,我已将文件扩展名更改为 .xls,我正在尝试使用 Gembox 库读取它。问题是当我尝试使用GemboxExcel.LoadXls(fileName); 方法读取文件时,出现以下错误:

异常消息:分析失败:读取错误:文件无效 OLE2 复合文件。异常堆栈跟踪:System.Exception:分析 失败:读取错误:文件不是有效的 OLE2 复合文件。 ---> GemBox.CompoundFileException:读取错误:文件不是有效的 OLE2 复合文件。在 GemBox.ReadData.ReadHeader(BinaryReader br, ArrayList&masterAllocationTable) 在 GemBox.ReadData..ctor(Ole2CompoundFile ole2File, Stream inputStream)
在 GemBox.Ole2CompoundFile.Load(Stream 流,布尔 loadOnDemand)
在 GemBox.Spreadsheet.ExcelFile.ReadStreamHelper(ExcelFile excelFile, 流 inputStream, Boolean readSummaryStreams, Byte[]& ss, Byte[]& dss, 布尔读取宏, Byte[]& ctls, Byte[]& compObj, Ole2Storage& mStorage,字符串文件名)在 GemBox.Spreadsheet.ExcelFile.LoadXls(字符串文件名,XlsOptions xlsOptions

问题在于,如果我从 Excel 中保存文件(Microsoft Excel -> 另存为 -> .xls 文件),然后在程序中打开该文件并使用 GemboxExcel.LoadXls(fileName); 方法,则它可以正常工作。

我已经在我的机器上安装了Microsoft Office Compatibility Pack,但它不起作用。

有人遇到过这个问题吗?

【问题讨论】:

    标签: c# excel ole gembox-spreadsheet


    【解决方案1】:

    通过重命名来更改文件扩展名(例如从“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 文件”操作具有相同的效果。

    【讨论】:

    • 是的,我最终找到了解决方案。有什么方法可以使 BIFF5 文件(旧的 .xls 文件)工作吗?当我对那种文件做同样的事情时它会抛出一个错误,但它适用于普通 (BIFF8) .xls 文件。
    • 嗨,很遗憾,没有。目前 GemBox.Spreadsheet 仅支持 BIFF8 二进制文件格式的 XLS 文件,适用于 Excel 文件 97 – 2003。我假设您使用的是旧版本的 GemBox.Spreadsheet,但请注意 Excel 5.0/95 二进制文件格式 (BIFF5) 也是当前最新版本 (3.7) 不支持。
    • 感谢您的提醒!
    • @GemBoxDevTeam 如何从 DocumentModel 对象中获取二进制文件?
    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多