Go言語でExcel処理パートⅡ シート内の値をすべて表示する
前回の記事です。
前回はセルのアドレス(行No、列No)を指定して値をGETしましたが、今回はシート内の値をすべてGETしてコンソールに表示させます。
designed by Renée French.
用意するExcelファイル
前回同様、住所録をExcelファイルで用意しました。
全部で12万行以上のデータがあります。ファイルサイズが3.5MBと大きいファイルです。
[ad#top-1]
ソースコード
ソースコードは以下の通りです。
package main import ( "fmt" "github.com/tealeg/xlsx" //go get github.com/tealeg/xlsx ) func main() { excel, err1 := xlsx.OpenFile("address.xlsx") if err1 != nil { fmt.Printf(err1.Error()) } sheet := excel.Sheets[0] for _, row := range sheet.Rows { var lines string for _, cell := range row.Cells { text, _ := cell.String() lines += text + "," } fmt.Println(lines) } }
解説
前回と重複するところは解説を省略します。今回新たに加わったのは13行目以降です。
まず以下の構文でシート内のデータ全行を取得し、データの末尾までループします。
for _, row := range sheet.Rows {
で、取得した行データから今度は列データ(セルデータ)を取得し、これも右端までループさせます。
for _, cell := range row.Cells {
で、セル内の値を取得して(text)、カンマ区切りで連結させています。linesは1つめのループ内でstring宣言をしています。
text, _ := cell.String() lines += text + ","
行データの取得からセルデータの取得して、カンマ区切りで連結したデータをコンソール上に表示させている部分がこちらです。
sheet := excel.Sheets[0] for _, row := range sheet.Rows { var lines string for _, cell := range row.Cells { text, _ := cell.String() lines += text + "," } fmt.Println(lines) }
実行結果
実行結果がこちらです。
Excelファイルの読み込みに17秒かかりました。まあ、3.5MBものファイルなので仕方ないかと。データの表示には10秒くらいでした。24万行も表示させる割には速かったですね。
[ad#ad-1]
スポンサーリンク