無料で手軽に VBA 感覚で Excel を操作できるライブラリってことで ClosedXML を使い始めたんだけど、どうもいくつかの妙な現象に泣かされてます。
たまにファイルが壊れる。
公式のページに書式だかなんだかをいじった時に壊れるみたいな事が書いてあったような気がするけど、それとこの現象が同じなのかは不明。ちなみに書式は操作してない。
列幅が変わってしまう。
どうやら新規で作成したブックで出る現象のようだ。
とあるテンプレート xlsx のワークシートを既存の xlsx や新規作成した xlsx にコピーして転記作業なんぞをやらせてるんだけど、既存の xlsx にコピーしたワークシートでは現象が出ず、ClosedXML に作成させた xlsx では現象が出る。
具体的には、元のブックの列幅が "4.50 (41ピクセル)" だったものが、問題のブックでは "4.33 (31ピクセル)" に化ける。
列幅を表現してる単位に対するピクセル数もおかしいわけですね。
"4.33 (31ピクセル)" を Excel 上から 4.50 にしても 32ピクセルにしかならないし、逆に 41ピクセルにすると列幅が 6.00 になってしまう。
ピクセル基準だと 1.3倍ですか。なんでしょうか、これ。
公式のページに書式だかなんだかをいじった時に壊れるみたいな事が書いてあったような気がするけど、それとこの現象が同じなのかは不明。ちなみに書式は操作してない。
列幅が変わってしまう。
どうやら新規で作成したブックで出る現象のようだ。
とあるテンプレート xlsx のワークシートを既存の xlsx や新規作成した xlsx にコピーして転記作業なんぞをやらせてるんだけど、既存の xlsx にコピーしたワークシートでは現象が出ず、ClosedXML に作成させた xlsx では現象が出る。
具体的には、元のブックの列幅が "4.50 (41ピクセル)" だったものが、問題のブックでは "4.33 (31ピクセル)" に化ける。
列幅を表現してる単位に対するピクセル数もおかしいわけですね。
"4.33 (31ピクセル)" を Excel 上から 4.50 にしても 32ピクセルにしかならないし、逆に 41ピクセルにすると列幅が 6.00 になってしまう。
ピクセル基準だと 1.3倍ですか。なんでしょうか、これ。
コメント
コメント一覧 (3)
こちらで、回避策を発見できたので、参考まで。
テンプレートのExcelシートの1行目と1列目をExcelの標準のフォント(デフォルトなら、MSPゴシック、11)にしておくと、列幅とピクセルが合わない現象が起こりませんでした。
エクセルの列幅は基本フォントの文字幅で決まるので、新規作成時のための基本設定があるのかと思って探しまくったんですが、そうですか、新規作成してからセルのフォント変更で良かったんですか。
ClosedXML は他にも、条件付き書式が設定されているファイルを開いて、そのシートをコピーすると条件付き書式の書式が壊れるって問題もあるしなー・・・
補足させていたくと、
左上の1セルのフォント情報により判断されるようで。
表示されている左上1セルだけ標準のフォント指定すれば良い模様。
※非表示のセルの場合をの下・右のセルが用いられました。