Goでスプレッドシートをロードする方法
Aspose.Cells FOSS for Go は既存の .xlsx ワークブックをメモリ上に Workbook として読み込み、標準ライブラリ API を通じてワークシートやセルへ完全にアクセスできるようにします。開始する前に go get でモジュールをインストールしてください。
ステップバイステップガイド
ステップ 1: パッケージをインストールする
go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26インストール後、go.mod でモジュールのバージョンを確認してください。
ステップ 2: 必要なクラスをインポートする
import (
cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)ステップ 3: 読み込むためのワークブックを作成し、データを入力する
この例では、最初にワークブックを作成して実際の .xlsx ファイルを読み込めるようにします — ご自身のコードでは、既存のスプレッドシートへのパスに置き換えてください:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Product")
ws.Cells().Set("B1", "Price")
ws.Cells().Set("A2", "Widget A")
ws.Cells().Set("B2", 12.99)
wb.Save("outputfiles/products.xlsx")ステップ 4: 読み込まれたワークシートからセルの値を取得する
Worksheets[0] を使用して最初のワークシートにアクセスし、Cells().Get(ref) で個々のセルを読み取ります:
wb := cells_foss.NewWorkbook()
wb.Worksheets[0].Cells().Set("B2", 12.99)
ws2 := wb.Worksheets[0]
cell, err := ws2.Cells().Get("B2")
if err != nil {
fmt.Printf("Error reading cell: %v\n", err)
return
}
fmt.Printf("Price: %v\n", cell.Value)ステップ 5: すべての入力済みセルを列挙する
既知の参照を1つずつ読むのではなく、設定されたすべてのセルを反復処理する必要がある場合は、Cells().All() を使用してください:
wb := cells_foss.NewWorkbook()
ws2 := wb.Worksheets[0]
ws2.Cells().Set("A1", "Product")
allCells := ws2.Cells().All()
for ref, c := range allCells {
fmt.Printf("%s = %v\n", ref, c.Value)
}一般的な問題と対処法
Get セル参照に対してエラーを返します。 その参照はコレクションにまだ設定されていません。セルが次のもので書き込まれたことを確認してください Set、または返された error 明示的に確認してからセルを使用してください。
値が間違った型に見えます。 Cell.Value 渡された型をそのまま反映します Set (string、int、float64 など) — 基になる Go の型で分岐する必要がある場合は、type switch で調べてください。
読み込まれたワークブックに期待されたシートのデータがありません。 正しいエントリをインデックスしているか確認してください Worksheets — ブックには複数のワークシートが含まれることがあり、対象データがそこにない可能性があります Worksheets[0].
よくある質問
ワークブックを読み込む際、元のファイルがディスク上に残っている必要がありますか?
はい — Workbook は指定されたファイルパスから読み取ります。ロードが完了するまでソースファイルをアクセス可能な状態に保ってください。
ロード後にセルを変更し、変更を保存し直すことはできますか?
はい — Cells().Set は新規作成したワークブックと同様に、読み込んだワークブックでも動作します。変更を書き込むには再度 Save を呼び出してください。
ファイル全体をメモリに読み込むのを回避する方法はありますか?
はい — 大きなファイルでは、ワークブック全体を読み込むのではなく、行を順次読み取るだけで済む場合に StreamingReader.ProcessRows を使用してください。