プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、PHPExcelでExcel出力(ファイル保存)
ちょっくらPHPでExcelファイルの読み書きが必要になりましてね。
調べてみましたよっと。
要件はExcel97-2003形式(.xls)とExcel2007形式(.xlsx)の
両方読み書きできること。

結果、PHPExcelさんを採用ヾ(´∀`)ノ
っつ―わけで前準備ですが・・・

1.ここの右の方にあるDownloadからダウンロード
  ※私が取得した時点のバージョンは1.7.6でした。

2.解凍すると色々入っているけど「Classes/」フォルダがライブラリ本体。
  こいつを適当なところに置く。


これでOK。
さて、では実際に出力してみましょう(--)b
ごちゃごちゃ説明するより見た方が早いですよね。
ほれ、サンプルφ(--)

  <?php
      //ライブラリ読み込み
      require_once './Classes/PHPExcel.php';
      require_once './Classes/PHPExcel/IOFactory.php';
  
      // PHPExcelオブジェクトを生成する
      $book = new PHPExcel();
  
      //シート設定
      $book->setActiveSheetIndex(0);
      $sheet = $book->getActiveSheet();
      $sheet->setTitle('sheet name');    //シート名指定
  
      // セルに値を入れる
      $sheet->setCellValue('A1', 'hoge');
      $sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');
  
      // Excel2003形式で保存する
      $writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
      $writer->save("o.xls");    //ファイル名を指定して保存
  ?>


上から順に説明すると、まずさっき解凍したライブラリをrequireしまする。
ほんでExcel操作用のオブジェクトを作成して、
そっからシートのオブジェクトを抜き出して値を入れてファイル名を指定して保存。
ExcelVBA触ったことがある人なら見覚えあるんじゃないですかね。
ちなみに

  $sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');

で日本語を入力していますが、文字コードがUTF-8じゃないと日本語消えちゃいます。
PHPファイル自体をUTF-8で作成するかmb_convert_encoding()かまして下さい。

  $writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
  $writer->save("o
.xls");    //ファイル名を指定して保存

はExcel97-2003形式(.xls)で出力です。
"Excel5"の部分がExcel97-2003形式(.xls)ねーって意味。
Excel2007形式(.xlsx)で出力したい場合はここを"Excel2007"に変えて
出力ファイルの拡張子を「.xlsx」に変えて

  $writer = PHPExcel_IOFactory::createWriter($book, "Excel2007");
  $writer->save("o
.xlsx");    //ファイル名を指定して保存

とかすればOKです。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:PHPExcel  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事