見出し画像

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)
	}
}

のようにして実行すれば、

GO言語で作成したExcelファイル

のようなファイルが作成できました。
TWSNMP FCで使っているJavaScriptのライブラリで作成したファイルをExcelで開くと警告がでていましたが、このパッケージは、まったく問題ありません。
このパッケージをTWSNMP FCでも使いたくなってきました。
定形レポート作成に使えそうです。

復刻版やTWSNMP FCで使ったGO言語のパッケージの中にも、今回使おうと思うものがあります。たぶん、

  • bbolt:設定や分析結果の保存のためのデータベース

  • Geo IP:IPアドレスから位置情報を検索するパッケージ

  • RDAP:IPアドレスに関する情報(Who is)の検索

  • dnsbl:DNSブラックリスト検索

  • GROK:データ抽出

は使うと思います。

もう一つTWLogAIANで使いたいと思っている全文検索のパッケージがあります。

です。今週の移動時間は、この資料をずっと読んでいました。
試してみて使えそうならnoteに書きます。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。