Liking cljdoc? Tell your friends :D

clj-excel: The Beauty And The Beast

The goal is to give you a carefree experience while using Apache POI from Clojure.

Please note that the API isn't stable yet!

Build Status


Saving and loading data:

(use 'clj-excel.core)
(-> (build-workbook (workbook-hssf) {"Numbers" [[1] [2 3] [4 5 6]]})
    (save "numbers.xls"))

(lazy-workbook (workbook-hssf "numbers.xls"))
; {"Numbers" ((1.0) (2.0 3.0) (4.0 5.0 6.0))}

Cell values can be any type supported by POI (boolean, double, String, Date, ...; see setCellValue(...)).

They may also be maps; this enables styling:

(def a-cell-value
  {:value "world" :alignment :center
   :border [:none :thin :dashed :thin]
   :foreground-color :grey-25-percent :pattern :solid-foreground
   :font {:color :blue :underline :single :italic true
          :size 12 :font "Arial"}})

(-> (build-workbook (workbook-hssf) {"hello" [[a-cell-value]]})
    (save "hello-world.xls"))

Creating links:

;; just the data
{"a" [[{:value "foo" :link-document "b!A1"}]]
 "b" [[{:value "" :link-url ""}]]})


  • more concise styling; inheriting from declared styles?
  • support for images
  • autoresize columns
  • convienent in-document links

Relevant links

Depending on your needs:


Copyright (C) 2012 FIXME

Distributed under the Eclipse Public License, the same as Clojure.

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close