Добавить один лист из XLS на другой конкретный лист с помощью clojure и docjure - PullRequest
0 голосов
/ 07 февраля 2012

При получении 1 или более документов .xls я хочу взять содержимое с определенной вкладки / листа (пропуская первую строку) и добавить его в конец другого конкретного документа .xls на определенной вкладке / листе. в Clojure / Docjure. Вот что я пробовал до сих пор:

(use 'dk.ative.docjure.spreadsheet)
(def destinationDoc "/Users/nreilly/Desktop/Compiled.xls")
(def dwb (load-workbook destinationDoc))
(def swb (load-workbook  "/Users/nreilly/Desktop/test.xls"))
(def newdata (rest (row-seq (select-sheet "Data" swb))))
(add-rows! (select-sheet "Data" dwb) newdata)
(save-workbook! destinationDoc dwb)

Загрузка данных, кажется, работает нормально, но при вызове add-row! Я получаю следующую ошибку:

IllegalArgumentException No matching method found: setCellValue for class org.apache.poi.hssf.usermodel.HSSFCell clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:79)

Не уверен, является ли это ошибкой в ​​моем коде или библиотеке, или я просто не собираюсь делать это правильно.

Любые предложения о том, где искать?

(В качестве примечания важно сохранить его в формате .xls, поскольку в целевом документе есть несколько необычных сводных таблиц и других формул, в которых используются данные, которые я пытаюсь объединить)

Спасибо, Nathan

1 Ответ

1 голос
/ 07 февраля 2012

Это то, что происходит, когда вы пытаетесь взять данные из HSSFRow и ожидать, что они автоматически преобразуются в XSSFRow. Я считаю, что это способ преобразования документа Как преобразовать HSSFWorkbook в XSSFWorkbook с помощью Apache POI? , но вы можете рассмотреть возможность работы с XSSFworkbook или HSSFworkbook, чтобы уменьшить сложность и объем ошибок.

...