packages feed

HExcel-0.1.0.1: src/Main.hs

{-# LANGUAGE TypeApplications #-}
module Main where

import Control.Monad.Trans.State (execStateT)
import Control.Monad (forM_)
import Control.Monad.IO.Class
import Data.Time (getZonedTime)
import HExcel

-- #!/usr/bin/env stack
-- stack script --resolver lts-14.9 --package=HExcel

-- import HExcel

main = do
    wb <- workbookNew "buggy-dates.xls"
    let props = mkDocProperties
            { docPropertiesTitle   = "Buggy Dates"
            , docPropertiesCompany = ""
            }
    workbookSetProperties wb props
    ws <- workbookAddWorksheet wb "Buggy Dates"
    df <- workbookAddFormat wb
    formatSetNumFormat df "mm/dd/yy hh:mm AM/PM"
    sequence_ [
        writeDateTime
            ws
            (Just df)
            (fromIntegral (day - 1) * 24 + fromIntegral hour)
            0
            (DateTime 2019 11 day hour 0 0)
        | day <- [1..30], hour <- [0..23]
        ]
    workbookClose wb

-- main :: IO ()
-- main = do
--   wb <- workbookNew "test.xlsx"
--   let props = mkDocProperties
--         { docPropertiesTitle   = "Test Workbook"
--         , docPropertiesCompany = "HExcel"
--         }
--   workbookSetProperties wb props
--   ws <- workbookAddWorksheet wb "First Sheet"
--   df <- workbookAddFormat wb
--   formatSetNumFormat df "mmm d yyyy hh:mm AM/PM"
--   now <- getZonedTime
--   writeDateTime ws (Just df) n 5 (zonedTimeToDateTime now)
--   -- You can create HExcelState which is convenient api for writing to cells
--   let initState = HExcelState Nothing ws 4 1 0 1 0
--   _ <- flip execStateT initState $ do
--          writeCell "David"
--          writeCell "Dimitrije"

--          liftIO $ writeDateTime ws (Just df) 1 5 (zonedTimeToDateTime now)
--          liftIO $ writeDateTime ws (Just df) 2 6 (zonedTimeToDateTime now)
--          liftIO $ writeDateTime ws (Just df) 3 7 (zonedTimeToDateTime now)
--          liftIO $ writeDateTime ws (Just df) 4 8 (zonedTimeToDateTime now)
--          liftIO $ writeDateTime ws (Just df) 5 9 (zonedTimeToDateTime now)
--          liftIO $ writeDateTime ws (Just df) 6 10 (zonedTimeToDateTime now)
--          -- we can skip some rows
--          skipRows 1
--          writeCell "Jovana"
--          -- skip some columns
--          skipCols 1
--          writeCell (zonedTimeToDateTime now)
--          writeCell @Double 42.5

--   -- or use functions that run in plain IO
--   -- forM_ [5 .. 8] $ \n -> do
--   --   writeString ws Nothing n 3 "xxx"
--   --   writeNumber ws Nothing n 4 1234.56
--   --   writeDateTime ws (Just df) n 5 (zonedTimeToDateTime now)
--   workbookClose wb