hakeの日記

Windows環境でプログラミングの勉強をしています。

Go言語 - EXCELファイル操作

xlsx形式のエクセルファイルを読んだり、新規作成したりできます。
ただし、xlsxファイルを開いて、そのファイルを変更保存する。あるいは変更した内容を別名保存すると、その保存したファイルをExcelで開くときに内容を修復する旨のメッセージがでます(Excel2013で確認)

実行結果

  • 実行前

  • 実行後
1-A 1-B 1-C
2-A 2-B 2-C
3-A 3-B 3-C

2-B

2-A B-2 2-C

サンプル

package main

import (
	"fmt"
	"github.com/tealeg/xlsx"
)

func main() {
	excelFileName := "MyXLSXFile.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 {
				fmt.Printf("%s ", cell.String())
			}
			fmt.Printf("\n")
		}
	}

	var sheet *xlsx.Sheet
//	for _, sheet = range xlFile.Sheets {
//		if sheet.Name == "Sheet1" {break}
//	}
	sheet = xlFile.Sheets[0]

	rows := sheet.Rows
	cell := rows[1].Cells[1]
	fmt.Printf("\n%s\n\n", cell.Value)
	
	cell.Value = "B-2"
	
	for _, c := range rows[1].Cells {
		fmt.Printf("%s ", c.String())
	}
	fmt.Printf("\n")


	xlFile.Save("Change" + excelFileName)

}