仕事で Apache POI を使っているのだけれど、getColumnWidth や getDefaultColumnWidth の返す値が EXCEL のそれとはまったく異なる値を返すので大変困ってしまった。仕方なくEXCEL VBA を使ってフォントやサイズを変更しながら値を出力してみたのだが、線形に変化していないため、どういうロジックでフォントから列幅を導出しているのか全然わからない。 POIのjavadoc には'0'の文字列が8個入る幅と書かれているのだが、日本語環境のMS Pゴシックが指定されたEXCELでは 8.38 が返ってくる。5時間近く対照表と格闘しようやく実際のEXCELと同じ結果になるロジックを突き止めたのでここに書きとめておく。グーグル先生に問い合わせても情報が見つからなかったので、結構レアな内容なのかも。 まず、EXCELの列幅に影響を与えるプロパティは以下の