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

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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にシート名が格納されます:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)
	       }
    }
}

こんな感じになります:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
                // セル単位の処理
            }
        }
    }
}

とりあえずメモでした。