LoginSignup
13
13

More than 5 years have passed since last update.

PHPExcel でセルの幅をうまく調整する

Last updated at Posted at 2017-02-14

はじめに

PHPExcelというライブラリがあります。PHPでExcelファイルを生成したり出来るので便利です。


$sheet->getColumnDimension('A')->setAutoSize(true);

なんてするとカラムの幅を自動調整してくれる、みたいな記事が出回ってるのですが、実際のところ、これできちんとカラムの幅が整うことはないと思ってほうがよいです。これは日本語フォントを使ってるときだけではなく、アルファベットのフォントでもいまいちきちんと計算されてないぽいです。

これをどうにかします。

どうするか

以下、コメントを入れつつ書いていきます。


//自動調整を有効にします。
$sheet->getColumnDimension('A')->setAutoSize(true);
//これをだと -1 が表示されます。
echo $sheet->getColumnDimension('A')->getWidth();

//以下のメソッドをまわすことで実際の幅が計算され、格納されるぽいです。
$sheet->calculateColumnWidths();

//ここがミソ。これを設定しておかないと以下のsetWidth()が無視されます。
$sheet->getColumnDimension('A')->setAutoSize(false);

//これをだと 8.140869 などと表示されます。
echo $sheet->getColumnDimension('A')->getWidth();
$width = $sheet->getColumnDimension('A')->getWidth();

// 50%増しにしてみました。もともとのカラムの幅によってそこまでは必要ないことも多いと思いますが、とりあえず。
$sheet->getColumnDimension('A')->setWidth($width * 1.5);

//12.2113035 という値になります。
echo $sheet->getColumnDimension('A')->getWidth();

このあと、ブックを保存するとよいです。

まとめ

PHPExcelは便利なんだけど、落とし穴が多いです。ハマると抜け出すのは大変なので、頑張って抜け出しましょう。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13