白塗りの xlsx ファイルを rubyXL で作ろうとしたワイ、無を見る
Excel (や互換のスプレッドシート)で背景色を白で塗りつぶすと罫線が消える。 これを個人的に 白塗り と呼んでいる。
罫線を非表示にする設定をすればいいだけなのだが、 あまり方法が周知されていないため [要出典]、 ブック間をまたいだコピペでも自然に使用できる この白塗りをいまーだ使ってしまっている。
白塗り Excel ファイル (xlsx) を作るにあたり、 簡単のため何もデータを含まないファイルをベースとして考える。 作成したライブラリは rubyXL である。
Output file: blank_nonshironuri.xlsx
xlsx ファイルは所詮 xml ファイルを zip で固めたものなので、 Excel(など)で出力した xlsx ファイルを展開して xml ファイルを比較することで どういう風に編集すればいいかがわかる。
確認してみたところ xl\worksheets\sheet1.xml
に下記のような
col 要素を投入すればよいことが分かった。
ここで 16384 というのは、Excel 2007 以降から現在の Excel のバージョンに おける最大列数であり仕様に基づく(それ以前は 256 列)。 つまりすべての列に背景白のスタイルを設定すればよい。
そこで、
Output file: nil_shironuri.xlsx
とやってみたら、LibreOffice Calc で開けたんだが Excel で開くと 何も表示されない 無 の画面が広がった…。
なお厳密には、下記の通りでオンライン版では開けもしない。
- デスクトップ版 Excel (Excel Viewer も含む) : 無 の画面
- オンライン office.com の Excel : そもそも開けない
とやってみたら、LibreOffice で開けたんだが Excel で開くと 何も表示されない 無 の画面が広がった…。
なお厳密には、下記の通りでオンライン版では開けもしない。
- デスクトップ版 Excel (Excel Viewer も含む) : 無 の画面
- オンライン office.com の Excel : そもそも開けない
これを実現するコードとしては…
Output file: blank_shironuri.xlsx
成果物
- 本記事のコード https://gist.github.com/cat-in-136/0cf92ed96ee88cf65a3bcba0676986b5
- 本記事の内容の適用例 Shironuri by cat-in-136 · Pull Request #8 · cat-in-136/htot_conv
感想
- はじめて Excel (デスクトップ)、Office.com の Excel (オンライン版)、 LibreOffice Calc で挙動が異なるのを見た
- xlsx ファイルは xml ファイルを zip で固めたものなので意外と融通が利く
- もうちょっとまとめて書いて Qiita あたりに投稿しようと思ったが、 まとまりのない文章に相成ったので essay としてここのブログに書くことにした