Skip to content

Instantly share code, notes, and snippets.

@taktoa
Created April 23, 2017 08:23
Show Gist options
  • Save taktoa/b68981ef5c10a92ea48eaa24cbeef9df to your computer and use it in GitHub Desktop.
Save taktoa/b68981ef5c10a92ea48eaa24cbeef9df to your computer and use it in GitHub Desktop.
module Main where
import Codec.Xlsx
import Data.Store
import qualified Data.ByteString.Lazy as LBS
import System.Environment (getArgs)
import Orphans
main :: IO ()
main = do
[inputFile, outputFile] <- getArgs
putStrLn ("Input file: " ++ inputFile)
putStrLn ("Output file: " ++ outputFile)
xlsx <- toXlsx <$> LBS.readFile inputFile
LBS.writeFile outputFile (LBS.fromStrict (encode xlsx))
putStrLn "Finished converting file."
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StandaloneDeriving #-}
module Orphans () where
import Data.Store
import Data.Functor.Contravariant
import Data.Text (Text)
import qualified Data.ByteString.Lazy as LBS
import GHC.Generics (Generic)
import Codec.Xlsx
import Codec.Xlsx.Types
import Unsafe.Coerce (unsafeCoerce)
instance Store Xlsx
instance Store Worksheet
instance Store SheetProtection
instance Store Table
instance Store TableColumn
instance Store PivotTable
instance Store DataField
instance Store PositionedField
instance Store PivotFieldInfo
instance Store PivotFieldName
instance Store ConsolidateFunction
instance Store AutoFilter
instance Store FilterColumn
instance Store CustomFilter
instance Store CustomFilterOperator
instance Store DataValidation
instance Store ErrorStyle
instance Store ValidationType
instance Store ValidationExpression
instance Store SqRef
instance Store CfRule
instance Store Condition
instance Store TimePeriod
instance Store OperatorExpression
instance Store PageSetup
instance Store PaperSize
instance Store PageOrder
instance Store Orientation
instance Store PrintErrors
instance Store CellComments
instance Store SheetView
instance Store Pane
instance Store PaneType
instance Store PaneState
instance Store Selection
instance Store SheetViewType
instance Store Chart
instance Store ChartSpace
instance Store ChartTitle
instance Store LineSeries
instance Store Series
instance Store DataMarker
instance Store DataMarkerSymbol
instance Store DataLblProps
instance Store Legend
instance Store LegendPos
instance Store TextBody
instance Store TextWrap
instance Store TextRun
instance Store TextAnchoring
instance Store TextParagraph
instance Store TextVertical
instance Store TextVertOverflow
instance Store TextCharacterProperties
instance Store DispBlanksAs
instance Store ChartGrouping
instance Store Cell
instance Store CellRef
instance Store CellValue
instance Store CellFormula
instance Store Formula
instance Store RichTextRun
instance Store RunProperties
instance Store Color
instance Store FontFamily
instance Store FontScheme
instance Store FontUnderline
instance Store FontVerticalAlignment
instance Store Comment
instance Store XlsxText
instance Store FileInfo
instance Store Styles
instance Store DefinedNames
instance Store Variant
instance Store ColumnsWidth
instance Store RowProperties
instance (Store p, Store g) => Store (GenericDrawing p g)
instance (Store p, Store g) => Store (Anchor p g)
instance (Store p, Store g) => Store (DrawingObject p g)
instance (Store p) => Store (BlipFillProperties p)
instance Store PicNonVisual
instance Store GraphNonVisual
instance Store ShapeProperties
instance Store Transform2D
instance Store FillProperties
instance Store LineProperties
instance Store FillMode
instance Store NonVisualDrawingProperties
instance Store DrawingElementId
instance Store Geometry
instance Store Angle
instance Store Anchoring
instance Store ClientData
instance Store Point2D
instance Store Coordinate
instance Store PositiveSize2D
instance Store Marker
instance Store EditAs
instance Store UnitIdentifier
instance Store PositiveCoordinate
deriving instance Generic Xlsx
deriving instance Generic Worksheet
deriving instance Generic SheetProtection
deriving instance Generic Table
deriving instance Generic TableColumn
deriving instance Generic PivotTable
deriving instance Generic DataField
deriving instance Generic PositionedField
deriving instance Generic PivotFieldInfo
deriving instance Generic PivotFieldName
deriving instance Generic ConsolidateFunction
deriving instance Generic AutoFilter
deriving instance Generic FilterColumn
deriving instance Generic CustomFilter
deriving instance Generic CustomFilterOperator
deriving instance Generic DataValidation
deriving instance Generic ErrorStyle
deriving instance Generic ValidationType
deriving instance Generic ValidationExpression
deriving instance Generic SqRef
deriving instance Generic CfRule
deriving instance Generic Condition
deriving instance Generic TimePeriod
deriving instance Generic OperatorExpression
deriving instance Generic PageSetup
deriving instance Generic PaperSize
deriving instance Generic PageOrder
deriving instance Generic Orientation
deriving instance Generic PrintErrors
deriving instance Generic CellComments
deriving instance Generic SheetView
deriving instance Generic Pane
deriving instance Generic PaneType
deriving instance Generic PaneState
deriving instance Generic Selection
deriving instance Generic SheetViewType
deriving instance Generic Chart
deriving instance Generic ChartSpace
deriving instance Generic ChartTitle
deriving instance Generic LineSeries
deriving instance Generic Series
deriving instance Generic DataMarker
deriving instance Generic DataMarkerSymbol
deriving instance Generic DataLblProps
deriving instance Generic Legend
deriving instance Generic LegendPos
deriving instance Generic TextBody
deriving instance Generic TextWrap
deriving instance Generic TextRun
deriving instance Generic TextAnchoring
deriving instance Generic TextParagraph
deriving instance Generic TextVertical
deriving instance Generic TextVertOverflow
deriving instance Generic TextCharacterProperties
deriving instance Generic DispBlanksAs
deriving instance Generic ChartGrouping
deriving instance Generic Cell
deriving instance Generic CellRef
deriving instance Generic CellValue
deriving instance Generic CellFormula
deriving instance Generic Formula
deriving instance Generic RichTextRun
deriving instance Generic RunProperties
deriving instance Generic Color
deriving instance Generic FontFamily
deriving instance Generic FontScheme
deriving instance Generic FontUnderline
deriving instance Generic FontVerticalAlignment
deriving instance Generic Comment
deriving instance Generic XlsxText
deriving instance Generic FileInfo
deriving instance Generic Styles
deriving instance Generic DefinedNames
deriving instance Generic Variant
deriving instance Generic ColumnsWidth
deriving instance Generic RowProperties
deriving instance Generic (GenericDrawing p g)
deriving instance Generic (Anchor p g)
deriving instance Generic (DrawingObject p g)
deriving instance Generic (BlipFillProperties p)
deriving instance Generic PicNonVisual
deriving instance Generic GraphNonVisual
deriving instance Generic ShapeProperties
deriving instance Generic Transform2D
deriving instance Generic FillProperties
deriving instance Generic LineProperties
deriving instance Generic FillMode
deriving instance Generic NonVisualDrawingProperties
deriving instance Generic DrawingElementId
deriving instance Generic Geometry
deriving instance Generic Angle
deriving instance Generic Anchoring
deriving instance Generic ClientData
deriving instance Generic Point2D
deriving instance Generic Coordinate
deriving instance Generic PositiveSize2D
deriving instance Generic Marker
deriving instance Generic EditAs
deriving instance Generic UnitIdentifier
deriving instance Generic PositiveCoordinate
toLegacyPassword :: Text -> LegacyPassword
toLegacyPassword = unsafeCoerce
fromLegacyPassword :: LegacyPassword -> Text
fromLegacyPassword = unsafeCoerce
instance Store LegacyPassword where
size = contramap fromLegacyPassword size
poke = poke . fromLegacyPassword
peek = fmap toLegacyPassword peek
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment