Help us understand the problem. What is going on with this article?

HaskellでExcelファイル(xlsx)を読み込む

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」にしてプロジェクトフォルダ配下に保存します。
無題.png
コンパイルします。

stack build

実行します。

stack exec my-project-exe.exe

B3セルに記入した文字が表示されます。
無題2.png

本記事の全コード
https://github.com/ringo-apo/haskell_xlsx

以上

ringo-apo
VBA, C#, Java, Scala, Kotlinを勉強しています。
https://github.com/ringo-apo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away