今日もプログラミングスマートフォン用の表示で見る今日もプログラミングIT技術とかプログラミングのこととか特にJavaを中心に書いていきますこの広告は、90日以上更新していないブログに表示しています。2015-03-02POIの座標について調べてみるPOI業務システムでは「Excelファイルをアップロードしてデータを入力したい」「検索結果をExcelファイルでダウンロードしたい」というような要求が日常茶飯事だ。そんなときに役に立つのが、ApacheのPOI。POIではセルの値を読み書きするだけでなく、図形を描くことだってできる。やって座標を設定すればいいの?と悩んでしまう。そこで、POIの座標について調べてみた。POIで行の高さと列の幅を取得してみるまずは、POIで行の高さと列の幅を取得してみた。行1の高さ(ポイント)=15.0列Aの幅(ピクセル)=56.0136となった。Excelと高さが違う?実際にtest.xlsxを開いてみると...、行1の高さは「13.50(18ピクセル)」、列Aの幅は「8.38(72ピクセル)」と出る。高さの13.5というのは、ポイント単位らしい。}のようになっている。行の高さが設定されていない場合は、シートのデフォルト値を見に行くようだ。test.xlsxの拡張子を.zipに変えて展開し、xl/worksheets/sheet1.xmlを見てみる。defaultRowHeight="15.0"/>となっていて、この値が返されているというみたいだ。このデフォルト値は実際にはExcelで使われていないのだろうか?試したところ、デフォルトのままではなく、明示的にrow.setHeightInPointsを指定してxlsxを出力すると、Excelで見える値と合うようだ。}のようになっている。56.0136が返されたということか。こっちも、Excelのデフォルト値と違うなあ...。8*256)でExcelブックを作ると、Excel上では64ピクセルになった。72ピクセルにするには、9*256を設定する必要があるようだ。9の意味は不明...。フォントサイズを変えるとどうなる?でも、たぶんデフォルトの幅とか高さはフォントサイズに依存するよね。自分の環境のExcelでは11がデフォルトだ。POIのAPIを見たが、デフォルトフォントらしきものは見当たらない。</fonts>というのがあった。いけるかな?やってみたら、実際デフォルトフォントサイズが16のExcelブックを作れた。Excelの行の高さは18.75、列幅は8.09(96ピクセル)と大きくなったが、POIから取得したデフォルトの高さと幅は11ポイントの時と同じだった。ように設定したらどうなるか?Excel上では99ピクセルになった。フォントサイズに依存するようだ。1.5)が成り立っているようだ。この1.5の意味も不明...。まとめデフォルトのままだと、POIから取得した行の高さとか列幅は期待した値にならないみたい。Row.setHeightInPointsを設定すると実際のExcelの行の高さと合う。Sheet.setColumnWidthで設定した値から実際のExcelの列幅が得られるけど、関係式の意味はよく分からなかった。...あまりまとまってないなあ。こちらをご参照ください。»プロフィールid:hito4_t中堅SIerでアーキテクトっぽいことやってます。IT技術とかプログラミングのこととか特にJavaを中心に書いていきます。(3)はてなブログをはじめよう!hito4_tさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。