PHPめも

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

PhpSpreadsheetのインストール

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

composerで入れられます。

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

CakePHP3で使用する場合

$ composer.phar require phpoffice/phpspreadsheet

使い方

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

既存のExcelシートのセルの色を確認したい場合は、

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

PHPExcelのインストール

composerで入れられます。

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

使い方

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
Last-modified: 2021-09-19 (日) 19:09:27