Go言語でExcelファイルを処理するのが超簡単だった
2017/06/23
何かとGo言語をdisっている当ブログですが、Excelファイルを処理するのがめちゃくちゃ楽でした(笑)のでシェア。
まずはライブラリをインストール
ExcelをGo言語で扱えるようにするためには、tealeg/xlsxというライブラリが必要になります。コマンドプロンプトから以下のように打てばインストールでします。※GOPATHがあらかじめ設定されていることが前提です。
go get github.com/tealeg/xlsx
Go言語の特徴として、ライブラリを簡単にインストールできることなんですよね。これがC#だとVisual Studio上じゃないと厳しいんです。
[ad#top-1]
Excelファイルを用意
このブログでよく登場する住所録をExcelファイルで用意しました。
全部で12万行以上のデータがあります。これをGo言語で扱います。
ファイルサイズが3.5MBとそこそこ大きいファイルです。
ソースコードと実行結果
Go言語のソースコードは以下の通りです。ときどきtime.Now()を使って処理時間の計測をやっています。
package main import ( "fmt" "github.com/tealeg/xlsx" "time" ) func main() { dt1 := time.Now() excel, err1 := xlsx.OpenFile("address.xlsx") dt2 := time.Now() if err1 != nil { fmt.Printf(err1.Error()) } sheet1 := excel.Sheets[0] fmt.Println(sheet1.Name) //10000行目のデータを表示 fmt.Println(sheet1.Rows[10000].Cells[0].Value +" : "+ sheet1.Rows[10000].Cells[1].Value +" : "+ sheet1.Rows[10000].Cells[2].Value) dt3 := time.Now() fmt.Println(dt2.Sub(dt1)) //Excelファイルの読込時間 fmt.Println(dt3.Sub(dt2)) //Excelデータの処理時間 }
実行した結果はこの通り。Excelファイルを読み込んで指定した行のデータを表示してくれました。やはり3.5MBものExcelファイルの読み込みには時間がかかり、17秒かかっています。
解説
ソースコードの解説です。
まず、Excelファイルを読み込みます。
excel, err1 := xlsx.OpenFile("address.xlsx")
次に1つめのシートを取得します。
sheet1 := excel.Sheets[0]
で、コンソール上にシート名と10000行目のデータを表示させています。いたって簡単。
fmt.Println(sheet1.Name) fmt.Println(sheet1.Rows[10000].Cells[0].Value +" : "+ sheet1.Rows[10000].Cells[1].Value +" : "+ sheet1.Rows[10000].Cells[2].Value)
非常に簡単に扱えますね。もちろん処理中にExcelファイルが立ち上がるようなことはありません。
これを使ってなんか会社の業務を自動化してみようかと画策中です。膨大な行数の中から調べること多いので。
関連記事
[ad#ad-1]
スポンサーリンク