xlsxライブラリを使ってHaskellでExcelファイル(xlsx)を読み込む方法を記載します。
動作確認環境
OS: Windows10 pro
stack: 2.5.1
Excel: Excel 2016
xlsxライブラリ
https://hackage.haskell.org/package/xlsx
下記サンプルプログラムを使用します。
https://hackage.haskell.org/package/xlsx-0.8.2/docs/Codec-Xlsx.html
stackで新しいプロジェクトを作成します。
stack new my-project
cd my-project
サンプルプログラムで使用するモジュールをdependenciesに追加します。
dependencies:
- base >= 4.7 && < 5
- xlsx #追加
- bytestring #追加
- lens #追加
サンプルプログラムをMain.hsファイルにコピーします。
{-# LANGUAGE OverloadedStrings #-}
module Read where
import Codec.Xlsx
import qualified Data.ByteString.Lazy as L
import Control.Lens
main :: IO ()
main = do
bs <- L.readFile "report.xlsx"
let value = toXlsx bs ^? ixSheet "List1" .
ixCell (3,2) . cellValue . _Just
putStrLn $ "Cell B3 contains " ++ show value
module名をReadからMainに書き換えます。
module Main where
Excelファイルを作成します。
B3セルに表示したい文字を入れます。
sheet名を「List1」にします。
ファイル名を「report.xlsx」にしてプロジェクトフォルダ配下に保存します。
コンパイルします。
stack build
実行します。
stack exec my-project-exe.exe
本記事の全コード
https://github.com/ringo-apo/haskell_xlsx
以上