Goでスプレッドシートをロードする方法

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 を使用してください。

参照

 日本語