[[PHPめも]]

PHPExcelで実現できますが、最近の流行りはPhpSpreadsheetらしいです。

#contents

*PhpSpreadsheetのインストール [#ddee98ec]

PhpSpreadsheet~
https://github.com/PHPOffice/PhpSpreadsheet

composerで入れられます。

 $ php /usr/local/bin/composer.phar phpoffice/phpspreadsheet

CakePHP3で使用する場合

 $ composer.phar require phpoffice/phpspreadsheet

**使い方 [#dce3e536]

 require_once 'vendor/autoload.php';
 
 $reader = new PhpOffice\PhpSpreadsheet\Reader\Xlsx();
 $spreadsheet = $reader->load($file_name);
 
 // シート数の取得
 $count = $spreadsheet->getSheetCount();
 
 // シート名の取得
 $names = $spreadsheet->getSheetNames();
 
 // indexからシートを取得 0スタート
 $sheet = $spreadsheet->getSheet(0);
 
 // シート名からシートを取得
 $sheet = $spreadsheet->getSheetByName($names[0]);
 
 // セルに書き込み
 $sheet->setCellValue('A1', 'ほげほげ');
 
 // セル内で改行
 $sheet->getStyle('A2')->getAlignment()->setWrapText(true);
 $sheet->setCellValue('A2', "改行\n改行");
 
 // 1行目の高さを設定
 $sheet->getRowDimension(1)->setRowHeight(22.5);
 
 // A列の幅を設定
 $sheet->getColumnDimension('A')->setWidth(12);
 
 // 下線を二重線にする設定
 $border_double_style = array(
     'borders' => array(
         'bottom' => array(
             'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_DOUBLE
         )
     )
 );
 $sheet->getStyle('A1')->applyFromArray($border_double_style);
 
 // フォントの指定
 $font_style = array(
     'font' => array(
         'name' => 'MS ゴシック',
         'size' => '10',
     )
 );
 $sheet->getStyle('A1')->applyFromArray($font_style);
 
 // セルの塗りつぶし
 $fill_style = array(
     'fill' => array(
         'fillType' => PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
         'color' => array(
             'argb' => 'FFA7A7FF'
         ),
     )
 );
 $sheet->getStyle('C1:C5')->applyFromArray($fill_style);
 
 // 文字の一部を太字にする
 $richText = new \PhpOffice\PhpSpreadsheet\RichText\RichText();
 $richText->createText('文字の一部を');
 $richText->createTextRun('太文字')->getFont()->setBold(true);
 $richText->createText('にする。');
 $sheet->getCell('A4')->setValue($richText);
 
 // 文字の一部を赤字にする
 $richText = new \PhpOffice\PhpSpreadsheet\RichText\RichText();
 $richText->createText('文字の一部を');
 $richText->createTextRun('赤字')->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);
 $richText->createText('にする。');
 $sheet->getCell('A5')->setValue($richText);
 
 // 水平中央寄せにする設定
 $sheet->getStyle('A1')->getAlignment()->setHorizontal(PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
 
 // 数字を3桁区切りにする書式設定
 $sheet->getStyle('B1')->getNumberFormat()->setFormatCode('#,##0');
 
 // セルの結合
 $sheet->mergeCells('A1:B1');
 
 // 改ページの設定
 $sheet->setBreak('A50', \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet::BREAK_ROW);
 
 // 印刷範囲の指定
 $sheet->getPageSetup()->setPrintArea('A1:J108');
 
 // シート名の変更
 $sheet->setTitle('シート1');

 // ブックの新規作成
 $spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
 $sheet = $spreadsheet->getActiveSheet();
 
 // シートの作成
 $sheet = $spreadsheet->createSheet(1);

**Tips [#ye4404f1]

既存のExcelシートのセルの色を確認したい場合は、
-該当のセルを選択
-塗りつぶしのメニューから「その他の塗りつぶしの色」-「ユーザー設定」
-赤・緑・青の各数値を確認し、16進数に変換
-argbは透明度は100%でFFなので、最初はFFとする

*PHPExcelのインストール [#j3d8ad95]

composerで入れられます。

 $ php /usr/local/bin/composer.phar require phpoffice/phpexcel

**使い方 [#n9fd876b]

 require_once '/Classes/PHPExcel.php';
 require_once '/Classes/PHPExcel/IOFactory.php';
 
 # .xlsの場合
 $reader = PHPExcel_IOFactory::createReader('Excel5');
 # .xlsxの場合
 $reader = PHPExcel_IOFactory::createReader('Excel2007');
 
 $excel = $reader->load($excel_file);
 $sheet = $excel->setActiveSheetIndex(0);    // 最初のシートに設定
 
 # セル指定
 $value= $sheet->getCell('C3')->getValue();
 # 行列指定 一番左上のセル指定は0列、1行
 $value = $sheet->getCellByColumnAndRow(0,1)->getValue();

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS