BSD-3-Clause licensed by Harendra Kumar
Maintained by [email protected]
This version can be pinned in stack with:xls-0.1.3@sha256:b99419f90322b2866ac7c469093473a05024c166a03b0832934ab059e6db944f,3011

Module documentation for 0.1.3

Haskell xls Parsing

Hackage Build Status Build status

xls is a Haskell library to parse Microsoft Excel spreadsheet files. It parses the xls file format (extension .xls) more specifically known as BIFF/Excel 97-2004.

It can be useful for mining data from old Microsoft Excel spreadsheets.


Use decodeXlsIO to get a list of all worksheets. For example to convert all worksheets in an xls file to comma separated csv:

import Data.List (intercalate)
import Data.Xls (decodeXlsIO)

xlsToCSV :: String -> IO ()
xlsToCSV file = do
    worksheets <- decodeXlsIO file
    mapM_ (mapM_ (putStrLn . intercalate ",")) worksheets

An xls2csv utility is shipped with the package. See the haddock documentation for API details.

Under the hood

The library is based on the C library libxls.

See Also

  • xlsior: Streaming Excel (xslx) file generation and parsing
  • xlsx: Excel xslx file parser/writer


Welcome! If you would like to have something changed or added go ahead, raise an issue or send a pull request.



  • Add IO version of decodeXls function.


  • Upgrade libxls upstream package version from 1.4.0 to 1.5.1


  • Upgrade dependencies


  • Initial release