: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`.