cl-olefs

OLE File System tools for Common Lisp
git clone https://logand.com/git/cl-olefs.git/
Log | Files | Refs

commit 54d7a0708ae32be6d19fac9da5fb15766bad89ce
parent 200f34a5c3b8ee374391c0251010537de52b3bb9
Author: Tomas Hlavaty <tom@logand.com>
Date:   Tue, 28 Apr 2015 22:08:40 +0200

added README

Diffstat:
AREADME.org | 200+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 200 insertions(+), 0 deletions(-)

diff --git a/README.org b/README.org @@ -0,0 +1,200 @@ +#+title: cl-olefs +#+author: Tomas Hlavaty +#+options: creator:nil + +cl-olefs + +Project home: http://logand.com/sw/cl-olefs.html + +Contact: http://logand.com/contact.html + +Up: http://logand.com/sw/ + +* Introduction + +cl-olefs is a library for reading MS Office files (PPT, DOC, XLS) +implemented in portable Common Lisp. + +It is licensed under the MIT style licence. + +There are no dependencies on sbcl and ccl. On other Common Lisp +implementations, the only dependency is on ieee-floats. + +* Download and install + +Download the source code: + +: $ git clone http://logand.com/git/cl-olefs.git + +Then set up the Common Lisp environment to find the cl-olefs.asd file +and load the system into the Lisp image. + +* Usage + +There are no exported symbols from the olefs package yet, while it is +not sufficiently clear to me, what a good API should look like. +However, it is already possible to: + +- read PPT files, transform them to HTML and extract images +- partially read DOC files, especially formatting records +- read XLS files; there are many missing features, but it is already + possible to parse text cells and cells containing (double) floating + numbers. + +Because, there is no API yet, use M-. instead of the documentation +(are you using [[http://common-lisp.net/project/slime/][Slime]] yet?). The code should be simple to follow, +except the bizarre file format rules which are documented by MS and +others. + +** products.xls example + +From https://base.google.com/base/products.xls + +| id | title | description | link | price | brand | condition | image link | isbn | mpn | upc | weight | product type | quantity | shipping | tax | +|----+--------------------+------------------------------------------------------------------------------------+---------------------------------------------+-------+-------+-----------+-----------------------------------+---------------+--------+---------------+--------+---------------------------------------------------------------+----------+---------------------------------------+-----------------------------| +| 1 | Red wool sweater | Comfortable and soft, this sweater will keep you warm on those cold winter nights. | http://www.example.com/item1-info-page.html | 25 | Acme | new | http://www.example.com/image1.jpg | | ABC123 | 0001230001232 | 0.1 lb | "Clothing & Accessories > Clothing > Outerwear > Sweaters" | 3 | US:MA:Ground:5.95,US:024*:Ground:7.95 | US:CA:8.25:y,US:926*:8.75:y | +| 2 | Total Recall | Slightly used copy of Total Recall, the sci-fi classic, on DVD. | http://www.example.com/item2-info-page.html | 12 | Acme | used | http://www.example.com/image2.jpg | | XXYYZZ | 0004560004560 | 0.2 lb | "Media > DVDs & Videos > Science Fiction" | 1 | US:MA:Ground:5.95 | US::0: | +| 3 | Winnie the Pooh | Used copy. The adventures of Christopher Robin and his friends. | http://www.example.com/item3-info-page.html | 20 | Acme | used | http://www.example.com/image3.jpg | 0000142404674 | | | 0.3 lb | "Media > Books > Fiction > Literature" | 1 | US:::5.95 | US::0: | +| 4 | 8" plush Care Bear | Small care bear, brand new, absolutely adorable! | http://www.example.com/item4-info-page.html | 6.99 | Acme | new | http://www.example.com/image4.jpg | | AB001 | 0789012345674 | 0.4 lb | "Toys & Games > Toys > Dolls & Action Figures > Stuffed Toys" | 5 | US:::5.95 | US:CA:8.25:y | + +#+begin_src text + CL-USER> (olefs::parse-xls-file "products.xls") + (:WORKBOOK + (:SHEET "Products" + (:LABEL 0 0 "id") + (:LABEL 0 1 "title") + (:LABEL 0 2 "description") + (:LABEL 0 3 "link") + (:LABEL 0 4 "price") + (:LABEL 0 5 "brand") + (:LABEL 0 6 "condition") + (:LABEL 0 7 "image link") + (:LABEL 0 8 "isbn") + (:LABEL 0 9 "mpn") + (:LABEL 0 10 "upc") + (:LABEL 0 11 "weight") + (:LABEL 0 12 "product type") + (:LABEL 0 13 "quantity") + (:LABEL 0 14 "shipping") + (:LABEL 0 15 "tax") + (:LABEL 1 0 "1") + (:LABEL 1 1 "Red wool sweater") + (:LABEL 1 2 "Comfortable and soft, this sweater will keep you warm on those cold winter nights.") + (:LABEL 1 3 "http://www.example.com/item1-info-page.html") + (:NUMBER 1 4 25.0D0) + (:LABEL 1 5 "Acme") + (:LABEL 1 6 "new") + (:LABEL 1 7 "http://www.example.com/image1.jpg") + (:LABEL 1 9 "ABC123") + (:LABEL 1 10 "0001230001232") + (:LABEL 1 11 "0.1 lb") + (:LABEL 1 12 "\"Clothing & Accessories > Clothing > Outerwear > Sweaters\"") + (:NUMBER 1 13 3.0D0) + (:LABEL 1 14 "US:MA:Ground:5.95,US:024*:Ground:7.95") + (:LABEL 1 15 "US:CA:8.25:y,US:926*:8.75:y") + (:LABEL 2 0 "2") + (:LABEL 2 1 "Total Recall") + (:LABEL 2 2 "Slightly used copy of Total Recall, the sci-fi classic, on DVD.") + (:LABEL 2 3 "http://www.example.com/item2-info-page.html") + (:NUMBER 2 4 12.0D0) + (:LABEL 2 5 "Acme") + (:LABEL 2 6 "used") + (:LABEL 2 7 "http://www.example.com/image2.jpg") + (:LABEL 2 9 "XXYYZZ") + (:LABEL 2 10 "0004560004560") + (:LABEL 2 11 "0.2 lb") + (:LABEL 2 12 "\"Media > DVDs & Videos > Science Fiction\"") + (:NUMBER 2 13 1.0D0) + (:LABEL 2 14 "US:MA:Ground:5.95") + (:LABEL 2 15 "US::0:") + (:LABEL 3 0 "3") + (:LABEL 3 1 "Winnie the Pooh") + (:LABEL 3 2 "Used copy. The adventures of Christopher Robin and his friends.") + (:LABEL 3 3 "http://www.example.com/item3-info-page.html") + (:NUMBER 3 4 20.0D0) + (:LABEL 3 5 "Acme") + (:LABEL 3 6 "used") + (:LABEL 3 7 "http://www.example.com/image3.jpg") + (:LABEL 3 8 "0000142404674") + (:LABEL 3 11 "0.3 lb") + (:LABEL 3 12 "\"Media > Books > Fiction > Literature\"") + (:NUMBER 3 13 1.0D0) + (:LABEL 3 14 "US:::5.95") + (:LABEL 3 15 "US::0:") + (:LABEL 4 0 "4") + (:LABEL 4 1 "8\" plush Care Bear") + (:LABEL 4 2 "Small care bear, brand new, absolutely adorable!") + (:LABEL 4 3 "http://www.example.com/item4-info-page.html") + (:NUMBER 4 4 6.99D0) + (:LABEL 4 5 "Acme") + (:LABEL 4 6 "new") + (:LABEL 4 7 "http://www.example.com/image4.jpg") + (:LABEL 4 9 "AB001") + (:LABEL 4 10 "0789012345674") + (:LABEL 4 11 "0.4 lb") + (:LABEL 4 12 "\"Toys & Games > Toys > Dolls & Action Figures > Stuffed Toys\"") + (:NUMBER 4 13 5.0D0) + (:LABEL 4 14 "US:::5.95") + (:LABEL 4 15 "US:CA:8.25:y"))) +#+end_src + +** checkbook.xls example + +From http://sunburst.usd.edu/~bwjames/tut/excel/checkbook.xls + +| check # | date | description | debit | credit | balance | +|---------+---------+--------------------------------+--------------------+---------+-----------| +| | | open account (initial deposit) | | $500.00 | $500.00 | +| 101 | 20/9/99 | Burger King | $8.57 | | $491.43 | +| | 24/9/99 | Paycheck | | $539.00 | $1,030.43 | +| 102 | 30/9/99 | Hy-Vee | $34.18 | | $996.25 | +| 103 | 22/9/99 | Electric Company | $74.33 | | $921.92 | +| 104 | 23/9/99 | Cable TV | $24.56 | | $897.36 | +| | | | | | | +| | | | equation | | | +| | | | previous balance | | | +| | | | subtract any debit | | | +| | | | add any credit | | | + +#+begin_src text + CL-USER> (olefs::parse-xls-file "checkbook.xls") + (:WORKBOOK + (:SHEET "Sheet1" + (:LABEL 0 0 "check #") + (:LABEL 0 1 "date") + (:LABEL 0 2 "description") + (:LABEL 0 3 "debit") + (:LABEL 0 4 "credit") + (:LABEL 0 5 "balance") + (:LABEL 1 2 "open account (initial deposit)") + (:NUMBER 1 4 500.0D0) + (:LABEL 2 2 "Burger King") + (:NUMBER 2 3 8.57D0) + (:NUMBER 3 1 34965.0D0) + (:LABEL 3 2 "Paycheck ") + (:NUMBER 3 4 539.0D0) + (:LABEL 4 2 "Hy-Vee") + (:NUMBER 4 3 34.18D0) + (:LABEL 5 2 "Electric Company") + (:NUMBER 5 3 74.33D0) + (:LABEL 6 2 "Cable TV") + (:NUMBER 6 3 24.56D0) + (:LABEL 8 3 "equation") + (:LABEL 9 3 "previous balance") + (:LABEL 10 3 "subtract any debit") + (:LABEL 11 3 "add any credit")) + (:SHEET "Sheet2") + (:SHEET "Sheet3")) +#+end_src + +* Links + +Comments: +http://www.reddit.com/r/lisp/comments/1axs8u/clolefs_step_towards_reading_ppt_doc_xls_in/ + +Hans Hübner: Dealing with Excel files from Common Lisp - Using ABCL +and Apache POI +http://netzhansa.blogspot.com/2013/03/dealing-with-excel-files-from-common.html + +ABCL Dev: M$FT Excel format from Common Lisp. +http://abcl-dev.blogspot.com/2013/03/mft-excel-format-from-common-lisp.html