1
2

More than 3 years have passed since last update.

パフォーマンスのために生まれたPHP Excel拡張機能xlswriter 1.3.3がリリースされました!

Posted at

xlswriterは、Excel 2007+ XLSXファイルからデータを読み取り、複数のシートを挿入し、テキスト、数値、数式、日付、チャート、写真、ハイパーリンクを書き込むために使用できるPHP C拡張です。

以下の機能があります。

I.書き込み

100%互換性のあるExcel XLSXファイル
-完全なExcel形式
-セルの結合
-ワークシート名を定義する
-フィルター
-チャート
-データの検証とドロップダウンリスト
-ワークシートPNG​​ / JPEG画像
-大きなファイルを書き込むためのメモリ最適化モード
Linux、FreeBSD、OpenBSD、OS X、Windowsで実行
-32ビットおよび64ビットにコンパイル
-FreeBSDライセンス
-唯一の依存関係はzlibです

次に、読みます

-データを完全に読み取る
-カーソル読み取りデータ
-データ型による読み取り
-xlsxからCSV

#ベンチマーク

テスト環境:Macbook Pro 13インチ、Intel Core i5、16GB 2133MHz LPDDR3メモリ、128GB SSDストレージ。

エクスポート

2つのメモリモードで100万行のデータをエクスポートできます(1行あたり27列、データタイプは文字列、文字列の長さは19)

-通常モード:時間のかかる「29S」、メモリのみ「2083MB」が必要です。
-固定メモリモード:52Sのみ、メモリ<1MBのみ。

インポート

100万行を超えるデータ(単一行、1列、データ型はINT)

-フルボリュームモード:「3S」には時間がかかり、「558MB」のメモリのみ。
カーソルモード:時間のかかる「2.8S」、メモリのみ「<1MB」。

#クイックスタート

エクスポート

$excel = new  \Vtiful\Kernel\Excel(['path' => '/home/viest']);

// fileName 会自动创建一个工作表,你可以自定义该工作表名称,工作表名称为可选参数
$filePath =  $excel->fileName('tutorial01.xlsx', 'sheet1')
    ->header(['Item',  'Cost'])
    ->data([
        ['Rent',  1000],
        ['Gas',  100],
        ['Food',  300],
        ['Gym',  50],
    ])
    ->output();

インポート

$excel = new \Vtiful\Kernel\Excel(['path' => './tests']);

$filePath =  $excel->fileName('tutorial.xlsx')
    ->header(['Item', 'Cost'])
    ->output();

$data = $excel->openFile('tutorial.xlsx')
    ->openSheet()
    ->getSheetData();

var_dump($data); // [['Item', 'Cost']]

XLSXtoCSV [通常モード]

適用シナリオ

-より多くのxlsxファイルフラグメントを統合処理のために1つのCSVファイルにマージします。
-xlsxファイルは、タスク処理速度よりも速く追加されます。ファイルが非同期でCSVに変換された後、より効率的なツール(たとえば、データベースツールがCSVを直接インポートする)で処理できます。

demo.php

$excel = new \Vtiful\Kernel\Excel(['path' => './tests']);

$filePath = $excel->fileName('tutorial.xlsx', 'TestSheet1')
    ->header(['String', 'Int', 'Double'])
    ->data([
        ['Item_1', 10, 10.9999995],
    ])
    ->output();

$fp = fopen('./tests/file.csv', 'a');

$resultBoolOne = $excel->openFile('tutorial.xlsx')
    ->openSheet()
    ->putCSV($fp);

$resultBoolTwo = $excel->openFile('tutorial.xlsx')
    ->openSheet()
    ->putCSV($fp);

file.csv

String,Int,Double
Item_1,10,10.9999995
String,Int,Double
Item_1,10,10.9999995

Xlsx移行CSV [コールバックモード]

このアプリケーションシナリオは従来のモデルと似ていますが、上位レベルの企業はコールバック関数を使用してデータを処理し、xlsxを使用してデータをフィルター処理し、csvに書き込むことができます。

ドキュメントの他の機能を見る

https://xlswriter-docs.viest.me

倉庫住所

GitHub:https://gitee.com/viest/php-ext-xlswriter

PECL:https://pecl.php.net/package/xlswriter

終わり

それがあなたを助けるなら、私に星をください

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2