[PHP-users 27306] Spreadsheet_Excel_Writer の setColumn の幅指定について

MEGUMI Yoshinari gabin1 @ yahoo.co.jp
2005年 10月 28日 (金) 17:10:22 JST


恵と申します。

現在、Spreadsheet_Excel_Writerで現存するexcelの
帳票フォーマットをPHPで生成して出力するべく
プログラムを作成中なのですが、壁に当たってしまいました。

元となる帳票の列の幅を調べて、プログラム内にセットしてい
るのですが、列の幅が合わないのです。
(私の場合は小さくなってしまっています。)

Worksheet::setColumnで幅をセットしようとしています。
ここでセットする「integer $width」ですが、
これは、excelの列の幅を指定する時に表示される
「X.XX(YYピクセル)」のX.XXの方です。
もしこれが、YYピクセルの方だったら何ら問題なかったのです
が....
そもそもこの単位の無い「X.XX」はなんだろうと思って調べて
みると、
「標準フォントにの半角文字がX.XX文字表示される幅」とのこ
とでした。
なので、この「標準フォント」を別途指定できれば問題ないの
ですが、私にはこの関数が見つけられませんでした。
(ちなみに、現状「Arial」の10ポイントが標準となっていま
す。)

具体的な数値の例では、
元:「幅 4.00(37ピクセル)」
Spreadsheet_Excel_Writer:「幅 4.00(33ピクセル)」
といった具合です。

この問題を解決するには、Spreadsheet_Excel_Writerで
・「標準フォント」を指定できる。
・setColumnの幅をピクセル単位で指定できる。
かと思うのですが....

どなたか、解決法をご存知では無いでしょうか?

(最後の手段としては、「Arial 10ポイント」から元帳の幅を
逆算して求めるというのもありますが、場当たり的な感じがし
てあまり使いたくありません。そもそも「Arial 10ポイント」
に常になるのかも使い始めたばかりで確証もありませんし。ま
たXFフォーマットというのもマニュアルにオプションとして載
っていましたが、これも何のことだか良くわかりませんでした
。)

以上、よろしくお願いします。

P.S.Worksheet::setRowの行の高さはポイントなので大丈夫の
ようです。



PHP-users メーリングリストの案内