Skip to content

Instantly share code, notes, and snippets.

@dagron
Forked from krisleech/jxmls.clj
Created December 14, 2018 07:54
Show Gist options
  • Select an option

  • Save dagron/9f24e1a41f67dd2146f42acfed1de76e to your computer and use it in GitHub Desktop.

Select an option

Save dagron/9f24e1a41f67dd2146f42acfed1de76e to your computer and use it in GitHub Desktop.
JXLS in Clojure
:dependencies [[org.clojure/clojure "1.8.0"]
[org.jxls/jxls "2.4.2"]
[org.jxls/jxls-poi "1.0.13" :exclusions [org.jxls/jxls]]])
(import [org.jxls.util JxlsHelper])
(import [org.jxls.common Context])
(require '(clojure.java [io :as io]))
;; http://jxls.sourceforge.net/xls/object_collection_template.xls
(def io (io/input-stream "object_collection_template.xls"))
(def os (io/output-stream "out.xls"))
;; keys and values must be strings, yhey are formatted as per template.
(def employees [ { "name" "Kris" } { "name" "Chris" } ])
(def context (Context.))
(.putVar context "employees" employees)
(def helper (JxlsHelper/getInstance))
(.processTemplate helper io os context)
;; If you try and do `.processTemplate` twice with the same io streams you get `java.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment