カテゴリー別アーカイブ: PHPexcel

PHPexcelメモ2

// エクセル基本情報作成

$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator(‘PHPexcel/laj’);
$objPHPExcel->getProperties()->setLastModifiedBy(“”);
$objPHPExcel->getProperties()->setTitle(“”);
$objPHPExcel->getProperties()->setSubject(“”);
$objPHPExcel->getProperties()->setDescription(“”);
$objPHPExcel->getProperties()->setKeywords(“”);
$objPHPExcel->getProperties()->setCategory(“”);

$objPHPExcel->createSheet(); // シート作成(2枚目以降)
$objPHPExcel->setActiveSheetIndex(0);    // シート選択
$objPHPExcel->getActiveSheet()->setTitle();// シート名
$sheet = $objPHPExcel->getActiveSheet(); // シート取得

    $sheet->getRowDimension($rows)->setRowHeight(30); // 行高さ指定
    $style = $sheet->getStyle(‘B1′);    // セルスタイル取得
    $style->getFont()->setName(‘MS PGothic’);// セルフォント指定
    $style->getFont()->setSize(20);          // セルフォントサイズ指定
    $style->getFont()->setBold(true);        // 太字指定
    $style->getFont()->getColor()->setARGB(‘FFFF0000′); // セル文字色指定
    $style->getFill()->getStartColor()->setARGB(‘FFFF99CC’); // セル色指定

    //セルボーダー指定
    // PHPExcel_Style_Border::BORDER_THIC 普通線
    // PHPExcel_Style_Border::BORDER_THICK 太線
    $style->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
    $style->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
    $style->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
    $style->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);

    //セル文字縦位置指定
    // PHPExcel_Style_Alignment::VERTICAL_CENTER 中央
    // PHPExcel_Style_Alignment::
    // PHPExcel_Style_Alignment::
    $style->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

    //セル文字横位置指定
    // PHPExcel_Style_Alignment::HORIZONTAL_CENTER 中央
    // PHPExcel_Style_Alignment::HORIZONTAL_RIGHT
    // PHPExcel_Style_Alignment::HORIZONTAL_LEFT
    $style->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $sheet->setCellValue(‘B1′,’はろーわーるど’);

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter->save(“ファイル名”); // セーブ

PHPexcel メモ

Reader の扱い方
まだ不明点が多数

$objReader = new PHPExcel_Reader_Excel2007;
// 追記 setReadDataOnlyに値を入れるとstyle関連を読まなくなるので
// データだけがほしいのであれば設定したほうがいい
$objReader->setReadDataOnly(true);
// エクセル2007ファイルロード
$objPHPExcel = $objReader->load(“test2.xlsx”);

// シート選択
$objPHPExcel->setActiveSheetIndex(5);
// シート名取得
$objPHPExcel->getActiveSheet()->getTitle()
// 指定セルの値取得
$objPHPExcel->getActiveSheet()->getCell(‘B2′)->getValue()

無いシートやファイルを選択しようとするとエラーで止まりました
シート数やセルの行数なども取れればいいんですが…引き続き検証続けます

あと、思った以上にメモリを喰うようです
160kぐらいのエクセルデータを読み込もうとしたら
メモリエラーで止まりました(PHP設定100M)
200Mにして読み込ませたら無事に動きました

setReadDataOnlyを設定したらかなり処理が軽くなりました
テンプレートデータを読み込むのでなければ必須かと思います

シートが日本語名だと読めはするけど書けないっぽい?

PHPexcel インストール方法

PHP5.2 以上なので、PHPをコンパイルしてインストール作業

とりあえず、PHP5.1.6 時点での phpinfo() で configure を確認
そのままの configure で PHP5.2.5 を configure > make > install してみるものの PHPexcel は動かず
エラーログを確認しながらオプションを追加し、configure からやり直し
追加したオプションは –enable-xmlreader –enable-xmlwriter –enable-zip の三つ
インストールするのに必要なものを configure のエラーを確認しながら yum でインストール

これでとりあえず、サンプルの読み書きは動いてくれました

書き込みは excel5 2003 2007 に対応してるようですが、読み込みは 2007 だけぽい?
書き込みサンプルは多いのですが読み込みのサンプルが少ないのでもう少し試行錯誤が必要っぽいです