次のコラム golang チュートリアル では、Golang による Excel の処理方法を紹介します。
Golang についてのこれまでの記事では、主に Golang の標準ライブラリに基づいて説明しましたが、今回は Golang の An open について見ていきます。 xlsx ファイルの処理に使用できるソース ライブラリです。まず、パッケージをダウンロードします。
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 サイトの他の関連記事を参照してください。