はじめに
Aspose.Cells FOSS for Go は、Excel スプレッドシートを操作するための純粋な Go ライブラリです。API を公開しており、ワークブックをゼロから作成し、セルの値を書き込み・スタイリングし、データ検証ルールを適用し、構造化テーブルを構築し、画像を埋め込み、そして大きな .xlsx ファイルを行単位で読み取ることができます — すべてネイティブな C や C++ の依存なしに実現します。
このライブラリは Go モジュールとして github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go にて入手可能で、MIT ライセンスの下でリリースされています。go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 を使用して、Go 1.24 以降の任意のプロジェクトにインストールしてください。
この記事では、主要な機能であるセルのスタイリング、データ検証、テーブル、画像、ストリーミング読み取りについて説明します。
主な特徴
セルのスタイリング
Font、Fill、Alignment、Border 設定を再利用可能な Style にまとめ、Cell.SetStyle でセルに適用します:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
boldStyle := cells_foss.NewStyle()
boldStyle.Font.Bold = true
boldStyle.Font.Size = 12
cell, _ := ws.Cells().Get("A1")
cell.SetStyle(boldStyle)
Alignment は Horizontal、Vertical、WrapText を制御し、Border は Top、Bottom、Left、Right の表示ルールと Color を制御します。
データ検証
Worksheet.AddDataValidation はセル範囲に検証ルールを付与します。DataValidation 構造体はルールの Type、1 つまたは 2 つの Formula 値、そしてエラーメッセージ用フィールドを保持します:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
dv := &cells_foss.DataValidation{
Type: cells_foss.DataValidationTypeList,
Formula1: `"Apple,Banana,Cherry,Dragonfruit"`,
AllowBlank: true,
ShowErrorMessage: true,
ErrorTitle: "Invalid Fruit",
ErrorMessage: "Please pick a fruit from the list.",
ErrorStyle: cells_foss.ErrorStyleStop,
}
ws.AddDataValidation("A2:A10", dv)
テーブル
Worksheet.AddTable は範囲上に構造化された Table を作成し、オプションでヘッダー行と名前付きテーブルスタイルを設定できます:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Item")
ws.Cells().Set("B1", "Qty")
tbl := ws.AddTable("A1:B2")
tbl.HasHeaderRow = true
tbl.StyleName = "TableStyleMedium6"
画像
Worksheet.AddPicture は画像を埋め込みます。Picture.SetAnchor(row, col) で位置を指定します:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
imageBytes := []byte{} // populate with real image bytes before use
pic := &cells_foss.Picture{Data: imageBytes, Format: "png"}
ws.AddPicture(pic)
pic.SetAnchor(5, 0)
大容量ファイルのストリーミング
StreamingReader はコールバックを通じてワークシートを行単位で読み取り、数千行に及ぶワークブックでもメモリに全体をロードする必要がありません:
sr := cells_foss.NewStreamingReader("large_workbook.xlsx")
err := sr.ProcessRows("Sheet1", func(rowIdx int, cells map[string]string) error {
// process one row at a time
return nil
})
if err != nil {
fmt.Printf("Error streaming: %v\n", err)
}
クイックスタート
モジュールをインストール:
go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26最小限のワークフロー — ワークブックを作成し、2つのセルに書き込み、ヘッダーを太字にし、保存します:
package main
import (
"fmt"
cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)
func main() {
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Product")
ws.Cells().Set("B1", "Revenue")
boldStyle := cells_foss.NewStyle()
boldStyle.Font.Bold = true
for _, ref := range []string{"A1", "B1"} {
cell, _ := ws.Cells().Get(ref)
cell.SetStyle(boldStyle)
}
if err := wb.Save("report.xlsx"); err != nil {
fmt.Printf("Error saving workbook: %v\n", err)
return
}
fmt.Println("Workbook saved to report.xlsx")
}
サポートされているフォーマット
| フォーマット | 拡張子 | 読み込み | 書き込み |
|---|---|---|---|
| XLSX | .xlsx | — | ✓ |
| CSV | .csv | ✓ | ✓ |
XLSX ブックは NewWorkbook でメモリ上に作成され、Workbook.Save で書き出されます。CSV は Workbook.ImportFromCSV と Workbook.ExportToCSV により双方向に扱えます。
オープンソース & ライセンス
Aspose.Cells FOSS for Go は MIT ライセンスの下でリリースされています。使用制限はなく、ランタイム料金も登録要件もありません。ソースコードは github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go にあります。
商用利用は MIT ライセンス条項に基づき許可されています。プロジェクトでエンタープライズレベルのサポート、拡張フォーマットのカバレッジ、またはクラウド統合が必要な場合、Aspose.Cells — Enterprise Product Family は別途の商用オファーです。