我正在创建一个计划任务,它从第三方站点下载一个 excel 文件,然后相应地更新数据库。
我可以通过 url (ie http://www.example.com/myExcel.xls
) 成功下载文件。但是当我之后尝试阅读它时,使用 Ben Nadel 的 POIUtility.cfc,我得到了各种错误。似乎是因为当我下载文件时,CFHTTP
它以只读格式保存。
这种行为听起来对任何人来说都很熟悉,或者是否有人知道如何保存文件以使其不是只读的?
提前致谢。
部分代码:
<cfhttp method="get"
url="http://www.example.com/myExcel.xls"
path="#expandpath('xls')#" file="stocks.xls" />
<cfset objPOI = CreateObject("component", "POIUtility").Init()/>
<cfset arrSheets = objPOI.ReadExcel( FilePath = ExpandPath("xls/stocks.xls")
, HasHeaderRow = true) />
6 月 22 日更新: 我收到的错误如下:
Object instantiation exception.
An exception occurred while instantiating a Java object. The class must not be an interface or an abstract class. Error: ''.
The error occurred in /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/POIUtility.cfc: line 883
Called from /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/autoUpdateStock.cfm: line 36
Called from /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/POIUtility.cfc: line 883
Called from /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/autoUpdateStock.cfm: line 36
881 : "org.apache.poi.hssf.usermodel.HSSFWorkbook"
882 : ).Init(
883 : LOCAL.ExcelFileSystem
884 : );
885 :
如果我直接从我的操作系统中打开下载的文件,excel 中的状态栏也会显示“(只读)”。如果我将文件保存为不同的文件名,然后在 POI 代码中使用该新文件名,则它可以正常工作。
前段时间我有一个类似的错误,问题是 excel 文件中不支持的 excel-stuff 导致 POI 给出相同的错误。但是这个 excel 文件不包含特殊的东西,比如图形等,只是没有数据过滤器的普通数据。
我在想源文件可能以 POI 实用程序不受支持的 excel 格式保存,但是当我查看文件的信息窗口时,它显示“种类:Microsoft Excel 97-2004 工作簿”,这与其他文件相同我试过(那项工作)。