xlswriter は PHP の C 拡張モジュールで、Excel 2007+ の XLSX ファイルからデータを読み込んだり、 複数のワークシートを挿入したり、テキストや数値、数式、日付、グラフ、 イメージ、ハイパーリンクを書き込んだりします。
特徴
I. 書き込み
- エクセルXLSXファイルと100%互換
- エクセル形式
- 合併セル
- ワークシート名の定義
- フィルター
- チャート
- PNG/JPEG
- 大容量ファイル書き込み時のメモリ最適化モード
- Linux、FreeBSD、OpenBSD、OS X用。Windows
- 32ビットと64ビットにコンパイル
- FreeBSD
- 依存関係は zlib だけです。
読書
- データの完全な読み取り
- カーソルによるデータの読み取り
- データ型による読み取り
ツール
- XLSX CSV
ベンチマーク
テスト環境
- Macbook Pro 13 inch
- CPU Intel Core i5
- Memory 16GB 2133MHz LPDDR3
テストデータ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
派生
2つのメモリモードで50万行のデータをエクスポート
- ノーマルモード:16S、メモリ991.8MB;
- 固定メモリーモード:24S、メモリー<1MB;
読む
50万行のデータ
- カーソルモード:23S、メモリは1MB未満;
- コールバック・モード:24秒かかり、メモリは1MB未満;
設置場所
Unix
pecl install xlswriter
Windows
はじめに
通常モードのエクスポート
$config = [
'path' => '/home/viest/xlswriter'
];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('tutorial.xlsx', 'sheet1')
->header(['Item', 'Cost'])
->data([
['Rent', 1000],
['Gas', 100],
['Food', 300],
['Gym', 50],
])
->output();
固定メモリーモードのエクスポート
$config = [
'path' => '/home/viest/xlswriter'
];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->constMemory('tutorial.xlsx', 'sheet1')
->header(['Item', 'Cost'])
->data([
['Rent', 1000],
['Gas', 100],
['Food', 300],
['Gym', 50],
])
->output();
カーソルモードの読み取り
$config = [
'path' => '/home/viest/xlswriter'
];
$excel = new \Vtiful\Kernel\Excel($config);
$sheet = $excel->openFile('tutorial.xlsx')
->openSheet();
while ($row = $sheet->nextRow()) {
var_dump($row);
}
コールバック・モードの読み取り
$config = [
'path' => '/home/viest/xlswriter'
];
$excel = new \Vtiful\Kernel\Excel($config);
$excel
->openFile('tutorial.xlsx')
->nextCellCallback(function ($row, $cell, $data) {
//
});
性能比較
xlswriter
| 0.1 | 12.57 | 0.650 | <1 | 0.9806 |
| 0.3 | 16.42 | 0.401 | <1 | 0.6614 |
| 0.5 | 18.82 | 0.571 | <1 | 0.28 |
| 1 | 29.35 | 0.36 | <1 | 0.675 |
| 5 | 127.87 | 1.608 | <1 | 2.9886 |
| 10 | 251.91 | 3.675 | <1 | 5.1276 |
| 15 | 376.98 | 5.613 | <1 | 8.5056 |
| 20 | 499.94 | 7.210 | <1 | 11.9122 |
PHPSpreadSheet
| 0.1 | 11.31 | 0.236 |
| 0.3 | 28.51 | 1.172 |
| 0.5 | 48.47 | 2.912 |
| 1 | 95.58 | 4.344 |
| 5 | 457.94 | 24.300 |
| 10 | 914.52 | 52.428 |
| 15 | 1437.11 | 104.603 |
| 20 | 1827.69 | 130.390 |
PHP_XLSXWriter
| 0.1 | 5.55 | 0.312 |
| 0.3 | 5.55 | 0.726 |
| 0.5 | 5.47 | 1.530 |
| 1 | 5.27 | 2.660 |
| 5 | 5.51 | 10.373 |
| 10 | 5.37 | 20.755 |
| 15 | 5.42 | 31.823 |
| 20 | 5.35 | 41.505 |





