我正在尝试使用clojure docjure(https://github.com/mjul/docjure)编辑Excel工作表中的一些单元格。
在docjure的文档中展示了如何创建新的电子表格,但我不想这样做。我要做的是读出excel表的一些信息,计算一些新值,然后将它们写回同一张表的特定单元格。
前两步是有效的。我只是不知道如何写回值。
我该怎么做?
答案 0 :(得分:2)
查看测试通常很有用,因为它们也可以在一定程度上记录代码。我找到了一个看似相关的文件:https://github.com/mjul/docjure/blob/master/test/dk/ative/docjure/spreadsheet_test.clj#L126
在那个文件中我找到了:
(deftest set-cell!-test
(let [sheet-name "Sheet 1"
sheet-data [["A1"]]
workbook (create-workbook sheet-name sheet-data)
a1 (-> workbook (.getSheetAt 0) (.getRow 0) (.getCell 0))]
(testing "set-cell! for Date"
(testing "should set value"
(set-cell! a1 (july 1))
(is (= (july 1) (.getDateCellValue a1))))
(testing "should set nil"
(let [^java.util.Date nil-date nil]
(set-cell! a1 nil-date))
(is (= nil (.getDateCellValue a1)))))
(testing "set-cell! for String"
(testing "should set value"
(set-cell! a1 "foo")
(is (= "foo" (.getStringCellValue a1)))))
(testing "set-cell! for boolean"
(testing "should set value"
(set-cell! a1 (boolean true))
(is (.getBooleanCellValue a1))))
(testing "set-cell! for number"
(testing "should set int"
(set-cell! a1 (int 1))
(is (= 1.0 (.getNumericCellValue a1))))
(testing "should set double"
(set-cell! a1 (double 1.2))
(is (= 1.2 (.getNumericCellValue a1)))))))
我现在无法测试,但这是你想要的吗?