Excel XLSX ファイルを読み取るためのオープンソース Go ライブラリ
オープン ソースの Go API を介して XLSX ドキュメントを読み取ります。
Go-Excel は、Microsoft Excel ドキュメントを読み取るためのオープン ソースの軽量な純粋な Go ライブラリです。この API は、XLSX ファイルをリレート db のようなテーブルとして読み取るシンプルで簡単な方法を提供することを目的としています。 XLSX ファイルの読み取り中、API は最初の行をタイトル行、行をデータ行と想定します。
API は、Excel ドキュメントを操作するための一連のタグを提供します。 column タグはタイトル行のフィールド名に対応し、default タグは値が定義されていない場合にデフォルト値を設定します。split タグは文字列を分割してスライスに変換します。nil タグはセル内のスキャン値をスキップし、reqタグは、列のタイトルが Excel に存在しない場合にエラーを返します。
Go-Excel を使い始める
Go-Excel をプロジェクトにインストールするための推奨される方法は、GitHub を使用することです。スムーズなインストールのために、次のコマンドを使用してください。
GitHub 経由で go-excel をインストールする
go get github.com/szyhf/go-excel
Free Go API 経由で Excel ファイルを読み取る
オープン ソース ライブラリの Go-Excel を使用すると、コンピューター プログラマーは GO を介して Excel ファイルを読み取ることができます。 Excel ファイルの読み取り中に、フィールド名をデフォルトの列名として使用でき、列を複数のフィールドにマップできます。読み取りオプションを設定した後、excel.NewConnector() メソッドを使用して Excel ファイルとの新しい接続を開き、Excel ファイルに接続すると、conn.NewReader() メソッドを使用してコンテンツを読み取ることができます。
簡単なリーダーが行くアプリでExcelファイルを読む
type Reader interface {
// Get all titles sorted
GetTitles() []string
// Read current row into a object
Read(v interface{}) error
// Read all rows
// container: container should be ptr to slice or array.
ReadAll(container interface{}) error
// Read next rows
Next() bool
// Close the reader
Close() error
}
GO API 経由で Excel を読み取るための高度なメソッド
オープン ソース API Go-Excel は、Excel ファイルを読み取るための基本的な方法と高度な方法を提供します。インデックス行をタイトルとして使用できます。タイトル行の前のすべての行は無視され、デフォルトのタイトル行は 0 に設定されます。空の行をスキップしたり、タイトルより大きい列をスキップしたりできます。 API を使用すると、空のセルにデフォルト値を設定できます。また、encoding.BinaryUnmarshaler による非整列化を使用してデフォルト値を設定できます。
無料Gt APIで地図を読む
conn := excel.NewConnecter()
err := conn.Open(filePath)
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
// Generate an new reader of a sheet
// sheetNamer: if sheetNamer is string, will use sheet as sheet name.
// if sheetNamer is int, will i'th sheet in the workbook, be careful the hidden sheet is counted. i ∈ [1,+inf]
// if sheetNamer is a object implements `GetXLSXSheetName()string`, the return value will be used.
// otherwise, will use sheetNamer as struct and reflect for it's name.
// if sheetNamer is a slice, the type of element will be used to infer like before.
rd, err := conn.NewReader(stdSheetName)
if err != nil {
fmt.Println(err)
return
}
defer rd.Close()
idx := 0
for rd.Next() {
var m map[string]string
if err := rd.Read(&m); err != nil {
fmt.Println(err)
return
}
expectStdMap := expectStandardMapList[idx]
if !reflect.DeepEqual(m, expectStdMap) {
fmt.Printf("unexpect std at %d = \n%s", idx, convert.MustJsonPrettyString(expectStdMap))
}
fmt.Printf("%d => %s\n", idx, convert.MustJsonString(m))
idx++
}