Excel bindings for Clojure, based on Apache POI
Switch branches/tags
Nothing to show
Latest commit 9780edd May 17, 2014 @mebaran mebaran Merge pull request #8 from outpace/add-comments
Add cell comments.


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 "example.com" :link-url "http://www.example.com/"}]]}

Creating comments:

{"a" [[{:value "foo" :comment {:text "Lorem Ipsum" :width 4 :height 2}}]]})


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

Relevant links

Depending on your needs:

  • Guide: How to get things done ...
  • API docs: ... in a little more detail
  • the source: ... when everything else fails


Copyright (C) 2012 FIXME

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