![見出し画像](https://assets.st-note.com/production/uploads/images/69794979/rectangle_large_type_2_5fc2ff24573425bea9d744a871f35f76.png?width=1200)
TWLogAIAN:Excelファイルを作成するGO言語のパッケージを試す
今朝は4時に起きました。今週はTWLogAIANで利用するためのGO言語のパッケージをいろいろ調べています。今朝はExcelファイルを扱うパッケージ
を試してみました。Wailsの環境だとTWSNMP FCのようにJavaScript側でExcelのファイルを作成してダウンロードできないようなのでGO言語側で対応するためです。
説明の書いてあるとおり
$go get github.com/xuri/excelize/v2
でインストール可能です。
サンプルプログラムを改造(合成)して
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
// Create a new sheet.
f.NewSheet("Sheet2")
// Set value of a cell.
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// Create a new sheet.
index := f.NewSheet("Sheet3")
// Set active sheet of the workbook.
f.SetActiveSheet(index)
// Add chart to sheet3.
categories := map[string]string{
"A2": "Small", "A3": "Normal", "A4": "Large",
"B1": "Apple", "C1": "Orange", "D1": "Pear"}
values := map[string]int{
"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
for k, v := range categories {
f.SetCellValue("Sheet3", k, v)
}
for k, v := range values {
f.SetCellValue("Sheet3", k, v)
}
if err := f.AddChart("Sheet3", "E1", `{
"type": "col3DClustered",
"series": [
{
"name": "Sheet3!$A$2",
"categories": "Sheet3!$B$1:$D$1",
"values": "Sheet3!$B$2:$D$2"
},
{
"name": "Sheet3!$A$3",
"categories": "Sheet3!$B$1:$D$1",
"values": "Sheet3!$B$3:$D$3"
},
{
"name": "Sheet3!$A$4",
"categories": "Sheet3!$B$1:$D$1",
"values": "Sheet3!$B$4:$D$4"
}],
"title":
{
"name": "Fruit 3D Clustered Column Chart YMI"
}
}`); err != nil {
fmt.Println(err)
return
}
// Save spreadsheet by the given path.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
のようにして実行すれば、
![](https://assets.st-note.com/img/1642021642161-crh2w3LTCz.png?width=1200)
のようなファイルが作成できました。
TWSNMP FCで使っているJavaScriptのライブラリで作成したファイルをExcelで開くと警告がでていましたが、このパッケージは、まったく問題ありません。
このパッケージをTWSNMP FCでも使いたくなってきました。
定形レポート作成に使えそうです。
復刻版やTWSNMP FCで使ったGO言語のパッケージの中にも、今回使おうと思うものがあります。たぶん、
bbolt:設定や分析結果の保存のためのデータベース
Geo IP:IPアドレスから位置情報を検索するパッケージ
RDAP:IPアドレスに関する情報(Who is)の検索
dnsbl:DNSブラックリスト検索
GROK:データ抽出
は使うと思います。
もう一つTWLogAIANで使いたいと思っている全文検索のパッケージがあります。
です。今週の移動時間は、この資料をずっと読んでいました。
試してみて使えそうならnoteに書きます。
明日に続く
いいなと思ったら応援しよう!
![twsnmp](https://assets.st-note.com/production/uploads/images/14333815/profile_ee1accba5615957e5029db85d57fdb0a.jpg?width=600&crop=1:1,smart)