外部からExcelにテキストデータを流し込みたい時にセル内で改行するtips
問題
ExcelのCSV, TSVはクォート付きでもセル内に改行があるとうまくいかない。
解法
Excel独自CSSを含むHTMLを生成して、生成したファイルをExcelで読ませる
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> br {mso-data-placement:same-cell;} td {mso-number-format:"\@";} </style> </head> <body> <table><tr><td>1</td><td>2</td><td>3<br>4</td></tr></table> </body> </html>
ExcelはxlsをHTMLとして出力できて、その中を見ていくとExcelの書式設定を指定するCSSが含まれている。
逆にHTMLを生成して、Excelの書式設定を指定するCSSを指定してやると、Excelで読んだ時に書式設定が反映されている。
上の例だと、以下のようになる。
- br {mso-data-placement:same-cell;} brタグに同一セル内での改行を指定。
- td {mso-number-format:"\@";} tdタグに書式設定の表示形式を文字列に指定。
classやid指定も効くはず。