0

我正在使用 Ben Nadel 的POIUtility.cfm读取和写入 Excel 文件。使用给定的代码/文件,我可以很容易地阅读一些文件。但是对于其他一些文件,我不断收到实例化错误。我无法弄清楚出了什么问题。

代码:

<cfset arrSheets = objPOI.ReadExcel( 
    FilePath = ExpandPath( "./File giving error.xls" ),
    HasHeaderRow = true
    ) />

错误:

对象实例化异常。

实例化 Java 对象时发生异常。该类不能是接口或抽象类。

我正在使用 CF10,在 IIS 上本地托管的站点。链接到示例文件

对象实例化异常

4

1 回答 1

0

简短的回答:

您尝试读取的文件格式太旧 (Excel 95)。POI仅支持 Excel 97 及更高版本。除非你真的有那种旧格式的文件,否则我不会担心。

鉴于CF 10 中内置了电子表格功能,您可能甚至不需要 POIUtility。

更长的答案:

如果您查看堆栈跟踪的末尾,“由”消息说明不支持Excel 95 (BIFF5)格式。(它已经超过二十岁了!)。要使该文件与 POI 兼容,您需要使用其他工具(如 Excel)对其进行保存,并将其保存为 Excel 97 格式(或更高版本)。

原因:org.apache.poi.hssf.OldExcelFormatException:提供的电子表格似乎是 Excel 5.0/7.0 (BIFF5) 格式。POI 仅支持 BIFF8 格式(来自 Excel 版本 97/2000/XP/2003)

顺便说一句,POIUtility 最初是在 ColdFusion 7 时代设计的,因为它没有官方支持操作电子表格。但是,CF7 确实包含 POI 库。因此,编写该组件来填补空白。然后出现了 CF9,它已经内置了电子表格功能,因此该组件变得不那么必要了。

于 2017-02-04T01:43:05.550 回答