LoginSignup
0
0

More than 3 years have passed since last update.

【Go】Excelからセル値を取得 & セル座標⇔番号変換

Last updated at Posted at 2020-01-25

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
感謝!:pray:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0