類似記事
- Goメモ-45 (Excelの各シートのズーム倍率を揃える)
- Goメモ-46 (Excelの各シートの最初のセルを選択状態にする)
- Goメモ-47 (Excelの特定シートのフッターの値を調整
- Goメモ-48 (Excelの特定シートの印刷の向きを調整)
- Goメモ-56 (Excelシートのページ区切りの先頭にメッセージ入れる)
- Goメモ-57 (Excelシートの画像の上にNo.XXってナンバリングしていく)
- Goメモ-122 (別ファイルのExcelシートをコピーしてもってくる)
- Goメモ-124 (画像ファイルをExcelに挿入する)
- Goメモ-159 (ExcelのシートをPDFに変換)
- Goメモ-291 (Excelの特定範囲のRangeを画像にして出力)
- Goメモ-292 (Excelの各シートの内容を画像にして出力)
概要
小ネタ。
仕事によっては、たまに1ブックに大量のシートがあるシートを扱ったりします。マスタデータをExcelで管理しているようなプロジェクトとか。。
んで、なぜかこのようなブックって、大量にシートがあるのに目次シートみたいなのが無い場合があります。。目次用のシートが無いと目的のシートを探すだけでも一苦労です。
とかいって、手作業で作ると日が暮れます。というか、手でチマチマ作る精神力がありませんw
こういうのはコンピュータさんにしてもらうのが一番です。
てことで、GoでちょこっとExcel操作するプログラム作ったので、ついでにサンプルをメモメモ。
サンプル
サンプルとして、先頭にTOC用のシートを挿入して、各シートのハイパーリンクを挿入するようにしています。
package main import ( "fmt" "github.com/devlights/goxcel" "path/filepath" ) func main() { if err := run(); err != nil { panic(err) } } func run() error { // // Initialize Goxcel // quit := goxcel.MustInitGoxcel() defer quit() excel, release := goxcel.MustNewGoxcel() defer release() wbs := excel.MustWorkbooks() wb, wbr := wbs.MustAdd() defer wbr() // // Add 20 worksheet // const WSCOUNT = 20 wss := wb.MustWorkSheets() wsList := make([]*goxcel.Worksheet, 0, 20) for i := 0; i < WSCOUNT; i++ { ws, _ := wss.AddLast() name, _ := ws.Name() cell := ws.MustCells(1, 1) cell.MustSetValue(name) wsList = append(wsList, ws) } // // Add TOC sheet // firstSheet, _ := wss.Item(1) tocSheet, _ := wss.AddBefore(firstSheet) _ = tocSheet.SetName("TOC") tocCell := tocSheet.MustCells(1, 1) tocCell.MustSetValue("Table Of Contents") // // Make TOC // for i, ws := range wsList { row := i + 2 hl, _ := tocSheet.HyperLinks() ra, _ := tocSheet.Range(row, 1, row, 1) wsName, _ := ws.Name() addr := "" subAddr := fmt.Sprintf("'%s'!A1", wsName) screenTip := "" _ = hl.Add(ra, addr, subAddr, screenTip, wsName) } // // Write Workbook // abs, _ := filepath.Abs(".") fpath := filepath.Join(abs, "result.xlsx") _ = wb.SaveAs(fpath) return nil }
実行すると、アプリと同じ場所に result.xlsx ってExcelファイルが出力されて以下のようになります。
$ git clone https://github.com/devlights/goxcel.git $ cd goxcel $ cd examples/generate_toc $ go run main.go
go-oleを内部で使っているので windows 限定です。
参考情報
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。