8.3 Microsoft Excelファイルを扱う

企業内の活動において、Microsoft Excel(以下、Excel)を用いたデータ管理は広く用いられています。 そのためサービスの画面に表示した一覧データを、Excelファイルとしてダウンロードして何かしらの業務判断を行いたい、あるいは編集後のExcelファイルをシステムに一括登録したいという要望が出てくるのは自然なことでしょう。

そういった要望に対して、ExcelファイルからCSVファイル形式での保存や、CSVファイルをExcelで開くといったことができるため、システムへの入出力はCSVで統一すれば良いのではないか? と思う方も多いかと思います。 一方でCSV保存後のシステムへのアップロードや、CSVファイルをExcelで開く際に数値・文字列の扱いに難があり、予期せぬ落とし穴にハマることも多くあります。 このような場合には、CSVへの変換ステップをはさまず直接Excelファイルを扱えるようにした方が良い場面もあります。

本節では、業務を扱うシステムを開発するときにしばしば登場する、ExcelをGoで扱う方法を説明します。

GoでExcelを操作する場合には、 tealeg/xlsxxuri/excelize が有名です。 ここでは xuri/excelize を用いて説明します。

8.3.1 Excelファイルに対する書き込み・読み込み

excelizeのAPIは、良くも悪くもとてもシンプルです。シート名、セル位置を Sheet1A1 と直接指定するスタイルで単純に用いるだけであれば迷わず使えます。

package main

import (
	"fmt"
	"log"

	"github.com/xuri/excelize/v2" ...