[PHP-users 28783] Re: PEAR::Spreadsheet_Excel_Writer でセルのフォーマット指定ができない

TAKAGI Masahiro matakagi @ osk2.3web.ne.jp
2006年 3月 23日 (木) 03:45:39 JST


高木です。

At Wed, 22 Mar 2006 14:42:54 +0900 (JST),
MEGUMI Yoshinari wrote:
> 
> 恵と申します。
> 
> > Notice:  Object of class
> > Spreadsheet_Excel_Writer_Format could not be 
> > converted to int in
> >  C:\php\PEAR\Spreadsheet\Excel\Writer\Worksheet.php
> > on line 1233
> の該当部分を呼んでいるのがソースのどの部分かわからないの
> で良くわからないのですが、addformatを、
> 
おそらく、Spreadsheet_Excel_Writer_Format クラスのオブジェクトと整数値
を無理やり比較しようとしているので Notice が発生しているのでしょう。

http://www.php.net/manual/ja/language.types.integer.php#language.types.integer.casting

にあるように、オブジェクトから整数への変換の仕様は未定義です。
 ・未定義の仕様を前提としたコードを書いていた
  ↓
 ・PHP 5.1 で仕様が変わってしまった
  ↓
 ・Notice 発生 :-(
といったところでしょうか。

> >     //フォーマットセット
> >     $f_title=$excel->addFormat();
> >     $f_title->setBorder(1);
> >     $f_title->setBold();
> >     $f_title->setFgColor("White");
> >     $f_title->setBgColor("Black");
> > 
> >     $f_data=$excel->addFormat();
> >     $f_data->setBorder(1);
> 
> $f_title=$wk_excel->addFormat(array("Border"=>"1","Bold"=>"1","FgColor"=>"White","BgColor"=>"Black"));
> $f_data=$wk_excel->addFormat(array("Border"=>"1"));
> 
> としたら、私の環境ではちゃんと出力されました。
たぶん、恵さんの環境では元質問者のコードそのままでも動作するのではあり
ませんか? というのも、これらのコードは内部的にはまったく同じ処理をして
いるからです。具体的な処理は、

 Spreadsheet_Excel_Writer_Workbook クラスの addFormat メソッド
  (Workbook.php の 360 行目あたり)
   ↓
 Spreadsheet_Excel_Writer_Format クラスのコンストラクタ
  (Format.php の 300 行目あたり)

を順に読んでいくとわかりやすいです。

-- 
高木 正弘 mailto:matakagi @ osk2.3web.ne.jp


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