2017-02-03 19 views
0

Я использую POIUtility.cfm Ben Nadel для чтения и записи в файлы Excel. Есть некоторые файлы, которые я могу читать очень легко, используя данный код/​​файл. Но для некоторых других файлов я продолжаю получать ошибку создания. Я не могу понять, что происходит не так.POIUtility.cfc - Не удается прочитать файлы excel: «Исключение экземпляра объекта»

Код:

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

Ошибка:

Object instantiation exception.

An exception occurred while instantiating a Java object. The class must not be an interface or an abstract class.

Я использую CF10, сайт размещается на локальном IIS. Link to sample file.

Object instantiation exception

+2

CF10 имеет электронные таблицы. Вы действительно хотите использовать POI? –

+0

Ваши скриншоты упоминаются ColdFusion 7 –

+0

(Как мы уже говорили, CF10 уже имеет поддержку электронных таблиц. Так что если вы конвертируете устаревшее приложение, вам может понадобиться обновить код.) Чтобы ответить на ваш вопрос - если вы посмотрите в трассировке стека - в сообщении об ошибке указано, что формат файла не поддерживается: * Представленная электронная таблица выглядит как формат Excel 5.0/7.0 (BIFF5). POI поддерживает только формат BIFF8 (из Excel 97/2000 /.....)*? Что произойдет, если вы попробуете прочитать его с помощью функции CF10 [SpreadSheetRead] (https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-s/spreadsheetread.html)? – Leigh

ответ

0

Короткий ответ:

Формат файла, который вы пытаетесь читать слишком старый (Excel 95). POI поддерживает только Excel 97 и более поздние версии. Если у вас действительно есть файлы в этом старом формате, я бы не стал беспокоиться об этом.

Учитывая, что spreadsheet functions встроены в CF 10, вам, вероятно, даже не нужна POIUtility.

Более длинный ответ:

Если вы посмотрите в конце трассировки стека, то «вызвано» сообщением объясняет, что формат Excel 95 (BIFF5), не поддерживается. (Это более двадцати лет!). Чтобы этот файл был совместим с POI, вам понадобится его с помощью другого инструмента, такого как Excel, и сохраните его в формате Excel 97 (или позже).

Caused by: org.apache.poi.hssf.OldExcelFormatException: The supplied spreadsheet seems to be Excel 5.0/7.0 (BIFF5) format. POI only supports BIFF8 format (from Excel versions 97/2000/XP/2003)

Как и в сторону, то POIUtility был первоначально разработан еще в дни ColdFusion 7, потому что он не имел поддержки не официального для манипулирования таблицами. Однако CF7 включил библиотеку POI. Таким образом, этот компонент был написан для заполнения пробела. Затем появился CF9, в котором уже были обработаны функции электронных таблиц, поэтому компонент стал менее необходимым.