blog/content/labs/golang/2017-09-03-golang-to-handle...

105 lines
2.1 KiB
Markdown
Raw Normal View History

2019-03-31 11:00:21 +00:00
+++
title = "GolangでExcelファイル(.xlsx)を読み込む"
date = 2017-09-03T22:47:31+08:00
2021-02-20 13:15:18 +00:00
description = "GolangでどうすればExcelファイルを読み込めるのか調べました。"
2019-03-31 11:00:21 +00:00
Tags = []
Categories = ["Golang"]
2020-05-22 17:13:47 +00:00
images = ["images/6052788455_79a263eeea.jpg"]
2019-03-31 11:00:21 +00:00
+++
`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
// セル単位の処理
}
}
}
}
```
## 最後に
とりあえずメモでした。