以下は go languageチュートリアル コラムで、GolangExcel の処理方法を詳しく説明しています。友人の参考になれば幸いです。必要としている!
Golang に関するこれまでの記事は主に Golang の標準ライブラリに基づいていましたが、今日は xlsx ファイルの処理に使用できる Golang のオープンソース ライブラリを見ていきます。まず、パッケージをダウンロードします
go get github.com/tealeg/xlsx
簡単な例でこのパッケージの使用方法を見てみましょう この例では、主に列名の入力とテーブル内のその列のすべてのデータの表示を実装します。コードは次のとおりです:
package main import ( "bufio" "fmt" "os" "github.com/tealeg/xlsx" ) func main() { if len(os.Args) != 3 { fmt.Println("Usage: xlsx pathname sheetname") os.Exit(1) } xlsxFile, err := xlsx.OpenFile(os.Args[1]) if err != nil { fmt.Println(err) os.Exit(1) } sheet := xlsxFile.Sheet[os.Args[2]] if sheet == nil { fmt.Println("表单名不存在") os.Exit(1) } for { title := getStdinInput("请输入列名:") if title == "" { fmt.Println(title) continue } titleColIndex := findColByTitle(sheet, title) if titleColIndex == -1 { fmt.Println("列名不存在") continue } rowLen := len(sheet.Rows) result := []string{} for rowIndex := 1; rowIndex < rowLen; rowIndex++ { content := sheet.Cell(rowIndex, titleColIndex).String() result = append(result, content) } fmt.Println(result) } } func getStdinInput(hint string) string { fmt.Print(hint) scanner := bufio.NewScanner(os.Stdin) if scanner.Scan() { return scanner.Text() } return "" } func findColByTitle(sheet *xlsx.Sheet, title string) int { titleRow := sheet.Rows[0] for titleIndex, col := range titleRow.Cells { if col.String() == title { return titleIndex } } return -1 }
まず main 関数を見てみましょう。main 関数は最初にコマンド ライン パラメータの検証を実行します。このプログラムを使用するには、2 つのパラメータを使用する必要があります。1 つは xlsx へのパスです。もう 1 つは使用するフォームの名前です。次に、xlsx ファイルと対応するフォームを開き、標準入力を介して列名を読み取り、対応するフォームで列名を見つけ、すべての行を走査して列のすべてのデータを取得します。ここでは、標準入力からデータを読み取り、対応する列インデックスを検索する 2 つの関数がカプセル化されています。
getStdinInput() 関数は、入力プロンプト ステートメントとしてパラメータを受け取り、スキャナに基づいて標準入力のテキストを取得します。
findColByTitle() 関数は、フォーム オブジェクトのポインターと列名という 2 つのパラメーターを渡します。ヘッダー行のすべての列をループして、一致する列インデックスを見つけて返します。
標準の xlsx ファイルを自分で作成できます。最初の行はタイトル行で、ユーティリティ プログラムでテストします。これまで Excel の処理に Python を使用していましたが、Golang の方が効率的だと感じています。
以上がGolang プロセスがどのように優れているかについての詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。