概要
たまに使った時に忘れているので、ここにメモメモ。
個人的に、Excel処理する場合は tealeg/xlsx を使わせてもらっています。使いやすいので重宝しています。
んで、1つのセルの中に複数行のテキストを設定した場合、そのままだと出力後のExcelファイルを見ると一行で表示された状態になります。
こんな感じですね。
このセルをダブルクリックするか、F2とかで編集状態にしてエンター押下すると
ってなるんですが、最初から後者の状態で出ていてほしいですよね。。。
これは、セルの設定で「折り返して全体を表示する」がONになっていないからです。
なので、コード内で該当のセルオプションをONにしてやればオッケイ。
折返し設定は style.Alighment.WrapText
というフィールドになっています。これを true にすればオッケイ。
サンプル
package main import ( "log" "os" "strings" "time" "github.com/tealeg/xlsx/v3" ) var ( appLog *log.Logger errLog *log.Logger ) func init() { appLog = log.New(os.Stdout, "", 0) errLog = log.New(os.Stderr, "", 0) } func main() { defer func() func() { appLog.Println("[START]") start := time.Now() return func() { appLog.Printf("[DONE ] out.xlsx (%v)", time.Since(start)) } }()() // REF: https://github.com/tealeg/xlsx/blob/master/tutorial/tutorial.adoc excel := xlsx.NewFile() sheet, err := excel.AddSheet("test1") if err != nil { errLog.Fatal(err) } withoutWrapText(sheet) withWrapText(sheet) err = excel.Save("out.xlsx") if err != nil { errLog.Fatal(err) } } // withoutWrapText -- WrapText 無し の場合 func withoutWrapText(sheet *xlsx.Sheet) { s := strings.Join([]string{"one", "two", "three", "four", "five"}, "\n") sheet.AddRow().AddCell().SetString(s) appLog.Printf("[WrapText無し]\n%s", s) } // withWrapText -- WrapText 有り の場合 func withWrapText(sheet *xlsx.Sheet) { s := strings.Join([]string{"one", "two", "three", "four", "five"}, "\n") row := sheet.AddRow() cell := row.AddCell() cell.SetString(s) style := cell.GetStyle() style.Alignment.WrapText = true style.Font.Name = "MS Gothic" style.Font.Size = 10.0 appLog.Printf("[WrapText有り]\n%s", s) }
実行してみる
出力されたExcelを開くと、以下のようになります。
$ go run main.go [START] [WrapText無し] one two three four five [WrapText有り] one two three four five [DONE ] out.xlsx (15.027ms)
最初のセルは、設定をしていないので一行で表示されているようになっています。
次のセルは、セルのスタイルで WrapText
を有効にしたので、ちゃんと表示されるようになっています。
参考情報
xlsx/tutorial.adoc at master · tealeg/xlsx · GitHub
おすすめ書籍
自分が読んだGo関連の本で、いい本って感じたものです。
- 作者:Katherine Cox-Buday
- 発売日: 2018/10/26
- メディア: 単行本(ソフトカバー)
- 作者:松尾 愛賀
- 発売日: 2016/04/15
- メディア: 単行本(ソフトカバー)
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者:Alan A.A. Donovan,Brian W. Kernighan
- 発売日: 2016/06/20
- メディア: 単行本(ソフトカバー)
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場