{-# LANGUAGE OverloadedStrings #-} import Codec.Xlsx import Codec.Xlsx.Writer import qualified Data.ByteString.Lazy as L import qualified Data.Map as M import Data.Text (Text) import Data.Time.Calendar import Data.Time.LocalTime xText :: Text -> Maybe CellData xText t = Just CellData{cdValue=Just $ CellText t, cdStyle=Just 0} xDate :: LocalTime -> Maybe CellData xDate d = Just CellData{cdValue=Just $ CellLocalTime d, cdStyle=Just 0} xDouble :: Double -> Maybe CellData xDouble d = Just CellData{cdValue=Just $ CellDouble d, cdStyle=Just 0} styles :: L.ByteString styles = "\ \" main :: IO () main = writeXlsxStyles "test.xlsx" styles [fromList "List" cols rows sheet] where cols = [ColumnsWidth 1 10 15] rows = M.fromList [(1,50)] sheet = replicate 10000 [xText "column1", xText "column2", Nothing, xText "column4", xDate $! LocalTime (fromGregorian 2012 05 06) (TimeOfDay 7 30 50), xDouble 42.12345, xText "False"]