人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPExcelで行高さの自動調整をする処理を書いています。

単純な自動調整は「setRowHeight()」で値を指定しないことで可能となりますが、これだとセル内で余裕が全くできず見栄えがよいと言えません。
そこで下記のように、?自動調整された行高さを取得、?適当な値を加える、??で得られた値で行高さを再設定 という処理を入れようとしています。
が、なかなか思い通りの動作が得られません。

試しに現在の行高さを取得し、セルにセットして観察すると「-1」などになっています。
そのままだと扱えないような値が入ってくるのかなと思い、ピクセルに変換して試したりもしましたが、同じでした。

この処理をうまく動作させるにはどうすればよいでしょうか?
以上よろしくお願いいたします。

コードは補足へ記載します。

●質問者: kon39392
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から

実際は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');


1 ● きゃづみぃ
●50ポイント

エクセル自体自動調節がうまくきかない場合があるから、文字数と改行数から必要な高さを割り出して自分でセットしたほうがいいですよ。


2 ● gizmo5
●50ポイント ベストアンサー

ここが参考になるのではないでしょうか。
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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ