単純な自動調整は「setRowHeight()」で値を指定しないことで可能となりますが、これだとセル内で余裕が全くできず見栄えがよいと言えません。
そこで下記のように、①自動調整された行高さを取得、②適当な値を加える、③②で得られた値で行高さを再設定 という処理を入れようとしています。
が、なかなか思い通りの動作が得られません。
試しに現在の行高さを取得し、セルにセットして観察すると「-1」などになっています。
そのままだと扱えないような値が入ってくるのかなと思い、ピクセルに変換して試したりもしましたが、同じでした。
この処理をうまく動作させるにはどうすればよいでしょうか?
以上よろしくお願いいたします。
コードは補足へ記載します。
実際はDBを読み込みながらセルへセット、行高さを調整...を繰り返すような処理です。
下記は簡易化しております。
$this->load->library("phpexcel");
$objReader = new PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load("d:\\format\\format001.xls");
$test_a = "改行を含む長文テキスト";
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $test_a);
//罫線を引く
$rangestr = "A".$setrow.":F".$setrow;
$objPHPExcel->setActiveSheetIndex(0)->getStyle($rangestr)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//行高さの自動調整
$objPHPExcel->setActiveSheetIndex(0)->getRowDimension($setrow)->setRowHeight();
//--↓↓ここから下の処理をうまく機能させたい↓↓
//高さに余裕を持たせる処理
//現在の行高さを取得
$rowHeight = $objPHPExcel->setActiveSheetIndex(0)->getRowDimension($setrow)->getRowHeight();
//加える
$rowHeight = $rowHeight +100;
//行高さを再設定
$objPHPExcel->setActiveSheetIndex(0)->getRowDimension($setrow)->setRowHeight($rowHeight);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('d:\\output\\output001.xls');
ここが参考になるのではないでしょうか。
http://phpexcel.codeplex.com/discussions/66215
Excel 2003 形式ではうまく動作しなくて、2007 形式だと期待通りに動作するとあります。
http://phpexcel.codeplex.com/workitem/10503
パッチは出ているようですが、こちらでは期待通りにならないとあります。
https://github.com/PHPOffice/PHPExcel/issues/165
Excel 2007 形式で試してみるのが良いと思います。
ここが参考になるのではないでしょうか。
http://phpexcel.codeplex.com/discussions/66215
Excel 2003 形式ではうまく動作しなくて、2007 形式だと期待通りに動作するとあります。
http://phpexcel.codeplex.com/workitem/10503
パッチは出ているようですが、こちらでは期待通りにならないとあります。
https://github.com/PHPOffice/PHPExcel/issues/165
Excel 2007 形式で試してみるのが良いと思います。
コメント(0件)