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ファイルを読み込めるのか調べました。"
|
2021-02-27 12:05:32 +00:00
|
|
|
tags = ["Golang"]
|
2021-11-17 13:56:35 +00:00
|
|
|
categories = ["プログラミング"]
|
2021-02-23 13:15:28 +00:00
|
|
|
author = "kazu634"
|
2022-08-21 08:25:55 +00:00
|
|
|
images = ["ogp/2017-09-03-golang-to-handle-xlsx-files.webp"]
|
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
|
|
|
|
// セル単位の処理
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## 最後に
|
|
|
|
とりあえずメモでした。
|