go

【Go言語】Excelファイルの読み込み・書き込みをする方法について

たけのこ

こんにちは!たけのこです!

ウェブアプリケーションを開発していると、

ときどき見かけるExcelの入出力機能。

いきなり実装ということになっても

プログラミングの基礎構文にも

参考書の応用にも載っていないので、ちょっと戸惑いますよね

でも、実はGo言語での実装は思いのほか簡単ですので

今回は、Excelファイルの操作機能の実装について紹介します。

この記事で紹介すること
  • Excelファイルへの書き込みと出力
  • Excelファイルの取り込みと読み取り
この記事で紹介しないこと
  • クラウドサービスへのExcelファイルアップロードなど

今回のメインはExcelファイルの簡単な操作なので、

クラウドサービスなどへのファイルアップロード方法については省いています。

では、早速どうぞ!

スポンサーリンク

はじめに

Excelファイルは、データの管理やレポート作成する際にとても便利で、様々な機能で多用されているのをよく見かけますね〜

他の言語では、少し複雑なファイル操作ですが

Go言語を使えば、簡単に実装することができます!

GO言語の開発環境がまだの人は以下の記事からどうぞ!

ライブラリのインストール

まず、必要なライブラリをインストールしていきましょう。

今回は「excelize」というライブラリを使用します。

以下のコマンドを実行してインストールします

1go get github.com/360EntSecGroup-Skylar/excelize

Excelにデータを書き込む方法

ライブラリのインストールが終わったら

早速、データの書き込みから実装していきましょう!

以下のコードを丸々コピってOKです!

1package main
2
3import (
4	"log"
5
6	"github.com/360EntSecGroup-Skylar/excelize"
7)
8
9func main() {
10	// 新しいExcelファイルを作成
11	f := excelize.NewFile()
12
13	// シートにデータを書き込む
14	f.SetCellValue("Sheet1", "A1", "Hello")
15	f.SetCellValue("Sheet1", "B1", "World")
16
17	// ファイルを保存(カレントディレクトリに保存されます)
18	if err := f.SaveAs("example.xlsx"); err != nil {
19		log.Fatal(err)
20	}
21}

このコードでは、新しいExcelファイルを作成し、”Sheet1″にデータを書き込み、

example.xlsxという名前で保存しています。

実行すると、カレントディレクトリ配下に

「Hello World」と書かれた「example.xlsx」ファイルが生成されると思います!

Excelファイルを取り込む方法

次に、既存のExcelファイルを読み込む方法を見てみましょう。

コードは以下の通りです。

1package main
2
3import (
4	"fmt"
5	"log"
6
7	"github.com/360EntSecGroup-Skylar/excelize"
8)
9
10func main() {
11	// Excelファイルを開く(カレントディレクトリに存在する必要があります)
12	f, err := excelize.OpenFile("example.xlsx")
13	if err != nil {
14		log.Fatal(err)
15	}
16
17	// シートからデータを読み込む
18	cellValue := f.GetCellValue("Sheet1", "A1")
19	fmt.Println("Cell A1:", cellValue)
20}
21

このコードでは、カレントディレクトリ配下にある「example.xlsx」という

既存のExcelファイルを開き、

Sheet1“の”A1“セルの値を取得して、ターミナルに表示しています。

まとめ

いかがだったでしょうか?

コードも実装内容も、そこまで複雑ではなかったと思います。

また、「Excelファイルの読み書きをするだけ」という単純な実装ですが

事前に用意したExcelレイアウトの所定位置に書き込みを行なうものに変更したりと

少しだけ改良するだけでも、実現できる機能の幅が広がると思います。

帳票フォーマットを整えて、指定位置にデータ出力したり、
Excel側のVBAと組み合わせたり、色々と改良はできるかも…!!

この記事が、Go言語の勉強に役立っていただけたら幸いです!

というわけで、今回はこの辺りで!

ありがとうございました!!

スポンサーリンク
ABOUT ME
たけのこ
たけのこ
自由奔放エンジニア
現役でエンジニアをやっています! 開発現場で経験したコーディング実装例、実装アーキテクチャの解説などを記事に書き起こしています!
記事URLをコピーしました