PHPExcelで列幅、行高をピクセルで取得する
- 2012年 4月 9日
- コメントを書く
PHPExcelで列幅と行の高さをピクセルで取得する必要があったのでやってみました。
//Excel2007形式でテンプレート読み込み
$reader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $reader->load("template.xlsx");
//A列の幅を取得←Excelの列区切りをポイントすると表示される数字
$colWidth = $objPHPExcel->getActiveSheet()->getColumnDimension("A")->getWidth();
//Excelテンプレートのデフォルトのフォント情報を取得
$fontInfo = $objPHPExcel->getActiveSheet()->getParent()->getDefaultStyle()->getFont();
//フォント情報と列幅からピクセルを取得
$colPixelWidth = PHPExcel_Shared_Drawing::cellDimensionToPixels($colWidth, $fontInfo);
//3行目の行の高さを取得
$rowHeight = $objPHPExcel->getActiveSheet()->getRowDimension(3)->getRowHeight();
//行の高さからピクセルを取得
$rowPixelHeight = PHPExcel_Shared_Drawing::pointsToPixels($rowHeight);
といった感じですが、バグがあるようで
PHPExcel_Worksheet_ColumnDimensionクラスのgetWidthメソッドと
PHPExcel_Worksheet_RowDimensionクラスのgetRowHeightメソッドが
正しい値を返してくれないのです・・・・
getWidthについてはエクセル上で表示される値より10%少なく取得され
getRowHeightについてはエクセル上の表示と同じ場合もあれば全然異なる場合もあります。
うーんExcel5形式なら正しく取れるのかな。