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

Sep 3, 2017   #Golang  : GolangでどうすればExcelファイルを読み込めるのか調べました。

github.com/tealeg/xlsxを用いればいいみたいということがわかりました。

とりあえず使ってみる

githubのページに記載してあるように動かします。ここではtest_draft.xlsxを読み込むこととします。

package main

import (
	"fmt"

	"github.com/tealeg/xlsx"
)

func main() {
    excelFileName := "./test_draft.xlsx"
    xlFile, err := xlsx.OpenFile(excelFileName)
    if err != nil {
        panic(err)
    }
    for _, sheet := range xlFile.Sheets {
        for _, row := range sheet.Rows {
            for _, cell := range row.Cells {
                text := cell.String()
                fmt.Printf("%s\n", text)
            }
        }
    }
}

細々とした使い方

きちんと利用するにあたって調べたことをまとめます。

シート名を取得したい

シート名は以下のようにして参照します。sheet.Nameにシート名が格納されます:

package main

import (
	"fmt"

	"github.com/tealeg/xlsx"
)

func main() {
    excelFileName := "./test_draft.xlsx"

    xlFile, err := xlsx.OpenFile(excelFileName)
    if err != nil {
        panic(err)
    }

    for _, sheet := range xlFile.Sheets {
        if sheet.Name != "Sheet1" {
	    	      fmt.Println(sheet.Name)
	       }
    }
}

列ごとに何かする

こんな感じになります:

package main

import (
	"fmt"

	"github.com/tealeg/xlsx"
)

func main() {
    excelFileName := "./test_draft.xlsx"

    xlFile, err := xlsx.OpenFile(excelFileName)
    if err != nil {
        panic(err)
    }

    for _, sheet := range xlFile.Sheets {
        for _, row := range sheet.Rows {
            // 列ごとの処理。例えばこんな感じ
            for _, cell := range row.Cells
                // セル単位の処理
            }
        }
    }
}

最後に

とりあえずメモでした。