golangでExcelを読み込む必要があったので開発しました。
ポイントは、
『ユーザーがどんな座標指定の仕方をしてくるか、未知』
だったので、ある程度の柔軟性とエラーチェックを仕込みました。
使い方
cmd/test.go
がそのまんまサンプルになっているので、ご参照ください。
関数のご紹介
excel.go
Init(excelFilePath string)
なにはともあれ、最初に呼んでやってください。
Javaのコンストラクタのような感じです。
Excelファイルのパスを渡すと、Excelファイルを読み込む下準備をして、構造体を返してくれます。
(excelFileInstance *ExcelFile) ReadCell(sheetName string, colNum, rowNum int)
Excelファイルの中のシートの名前、セルの列番号、行番号を指定すると、セル値を読み出してくれます。
セルの列番号、行番号の指定方法は、例えば D5 セルだったら 4, 5 です。
Initで得た構造体にドット . を付けて、直接呼び出してください。
(excelFileInstance *ExcelFile) ReadCellByCellAddress(sheetName string, cellAddress string)
Excelファイルの中のシートの名前、セル座標を指す文字を指定すると、セル値を読み出してくれます。
"セル座標の文字" とは、Excelではお馴染みの A7 とか BC20 とかの表記法です。
Initで得た構造体にドット . を付けて、直接呼び出してください。
ConvExcelCellAddressToColnumAndRownum(excelCellAddress string)
セル座標を指す文字を指定すると、列番号と行番号に変換して返します。
例えば、D5 セルだったら 4, 5 です。
ちなみに B:3 とか AZ-983 とか、間に文字を挟んで指定するユーザーもいるかも知れないので、対応しました。
(間に何か挟んでても、ちゃんと処理します)
ReadCellByCellAddress
関数も中でこれを使っているので、同様です。
ConvExcelColNumToAlphabet(cellColnum int)
列番号を指定すると、セル座標を指す文字の"列部分"を返します。
例えば 3 を指定すると C を返します。
開発にあたってはこちらを参考にさせて頂きました。
https://qiita.com/bamchoh/items/447a4c40e5f39edb2512
ありがとうございます。
またExcelの根幹処理は、もはや定番のこちらを。
https://github.com/tealeg/xlsx
感謝!