通过clojure和docjure将一张表格从XLS附加到另一张特定表格

时间:2012-02-07 04:07:28

标签: excel clojure apache-poi

当获取一个或多个.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-rows时,加载数据似乎工作正常!我收到以下错误:

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

不确定这是我的代码或库中的错误,还是我没有以正确的方式解决它。

关于在哪里寻找的任何建议?

(注意,保持.xls格式是很重要的,因为目标文档有一些奇特的数据透视表和其他使用我试图合并的数据的公式)

谢谢, 森

1 个答案:

答案 0 :(得分:1)

当您尝试从HSSFRow获取数据并期望它自动转换为XSSFRow时会发生这种情况,我相信这是一种转换文档How to convert HSSFWorkbook to XSSFWorkbook using Apache POI?的方法,但您可能需要考虑使用XSSFworkbook或HSSFworkbook可降低错误的复杂性和范围。