PHPでExcelファイルを読み込む
の編集
https://yassu.jp/pukiwiki/index.php?PHP%A4%C7Excel%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%C6%C9%A4%DF%B9%FE%A4%E0
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
[[PHPめも]] PHPExcelで実現できますが、最近の流行りはPhpSpreadsheetらしいです。 #contents *PhpSpreadsheetのインストール [#ddee98ec] PhpSpreadsheet~ https://github.com/PHPOffice/PhpSpreadsheet composerで入れられます。 $ php /usr/local/bin/composer.phar require 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();
タイムスタンプを変更しない
[[PHPめも]] PHPExcelで実現できますが、最近の流行りはPhpSpreadsheetらしいです。 #contents *PhpSpreadsheetのインストール [#ddee98ec] PhpSpreadsheet~ https://github.com/PHPOffice/PhpSpreadsheet composerで入れられます。 $ php /usr/local/bin/composer.phar require 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();
テキスト整形のルールを表示する