[PHP] PHPでExcel処理

PHPSpreadSheet

PHPからExcelファイルの読み書きをするには、PHPExcelの後継となっているPHPSpreadSheetを使うのが一般的だろうか。

https://phpspreadsheet.readthedocs.io/en/develop/

PHPSpreadSheetを使って、Excelファイルを読み込んで、CSVファイルに書き出す簡単な例は以下のようになる。

excel_test.php
<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader;
use PhpOffice\PhpSpreadsheet\Shared\Date;

$reader = new Reader();
$spreadsheet = $reader->load('test.xlsx');

$sheet = $spreadsheet->getSheetByName('Sheet1');

$highest =  $sheet->getHighestRow();
for ($i = 1; $i <= $highest; $i++) {
  echo $sheet->getCellByColumnAndRow(1, $i)->getValue() . ",";
  echo $sheet->getCellByColumnAndRow(2, $i)->getValue() . ",";
  echo $sheet->getCellByColumnAndRow(3, $i)->getValue() . ",";
  echo (Date::excelToDateTimeObject($sheet->getCellByColumnAndRow(4, $i)->getValue())->format('Y-m-d H:i:s')) . PHP_EOL;
}

[PHP] Embed SAPIでCからPHPを呼び出してみる その3

[PHP] Embed SAPIでCからPHPを呼び出してみる その2では、zend_eval_stringlを使って、文字列をPHPスクリプトとして解釈、実行してみた。
今度は定義済みのPHP関数をCから呼び出してみよう。

※今回も同様に、Linux上で、PHP 7.1.1を使った例。

全体

CからPHPの定義済み関数を呼び出すにはcall_user_functionを使う。

[PHP] Embed SAPIでCからPHPを呼び出してみる その2

[PHP] Embed SAPIでCからPHPを呼び出してみる その1では、PHPのファイルパスをSAPIに渡すことによって、PHPスクリプトをCから実行してみた。
今度はPHPファイルを介さずに直接、文字列をPHPスクリプトとして実行してみよう。

※今回も同様に、Linux上で、PHP 7.1.1を使った例。

eval

PHPの関数に文字列をそのままPHPスクリプトとして解釈するevalという関数があるけど、それと同じようにCから文字列をevalするにはzend_eval_stringlを使う。

例えば、"2 + 3;"をPHPスクリプトとして解釈、実行させるには以下のようにする。