使用clojure docjure编辑一些excel-cells

时间:2014-10-06 13:39:30

标签: excel clojure

我正在尝试使用clojure docjure(https://github.com/mjul/docjure)编辑Excel工作表中的一些单元格。

在docjure的文档中展示了如何创建新的电子表格,但我不想这样做。我要做的是读出excel表的一些信息,计算一些新值,然后将它们写回同一张表的特定单元格。

前两步是有效的。我只是不知道如何写回值。

我该怎么做?

1 个答案:

答案 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)))))))

我现在无法测试,但这是你想要的吗?