PHP_XLSXWriter:基于 PHP 的轻量级 XLSX 文件生成库

Lightweight XLSX Excel Spreadsheet Writer in PHP

分支2Tags13
文件最后提交记录最后更新时间
3 年前
8 年前
3 年前
12 年前
6 年前
3 年前
11 年前
8 年前
8 年前
3 年前

PHP_XLSXWriter

这个库的设计目标是轻量级和低内存占用。

它的目的是输出一个与Excel兼容的(Office 2007+)xlsx格式的工作表,只支持基本功能:

  • 支持PHP 5.2.1+
  • 接受UTF-8编码的输入
  • 多个工作表
  • 支持货币/日期/数字单元格格式化,简单的公式
  • 支持基础单元格样式设置
  • 支持写入包含10万行以上的大型电子表格

再也不会因使用PHPExcel耗尽内存

简单PHP命令行示例:

$data = array(
    array('year','month','amount'),
    array('2003','1','220'),
    array('2003','2','153.5'),
);

$writer = new XLSXWriter();
$writer->writeSheet($data);
$writer->writeToFile('output.xlsx');

简单/高级单元格格式:

$header = array(
  'created'=>'date',
  'product_id'=>'integer',
  'quantity'=>'#,##0',
  'amount'=>'price',
  'description'=>'string',
  'tax'=>'[$$-1009]#,##0.00;[RED]-[$$-1009]#,##0.00',
);
$data = array(
    array('2015-01-01',873,1,'44.00','misc','=D2*0.05'),
    array('2015-01-12',324,2,'88.00','none','=D3*0.05'),
);

$writer = new XLSXWriter();
$writer->writeSheetHeader('Sheet1', $header );
foreach($data as $row)
    $writer->writeSheetRow('Sheet1', $row );
$writer->writeToFile('example.xlsx');

50000行:(1.4秒,0MB内存使用)

include_once("xlsxwriter.class.php");
$writer = new XLSXWriter();
$writer->writeSheetHeader('Sheet1', array('c1'=>'integer','c2'=>'integer','c3'=>'integer','c4'=>'integer') );
for($i=0; $i<50000; $i++)
{
    $writer->writeSheetRow('Sheet1', array($i, $i+1, $i+2, $i+3) );
}
$writer->writeToFile('huge.xlsx');
echo '#'.floor((memory_get_peak_usage())/1024/1024)."MB"."\n";
行数 时间 内存
50000 1.4秒 0MB
100000 2.7秒 0MB
150000 4.1秒 0MB
200000 5.7秒 0MB
250000 7.0秒 0MB

简单单元格格式映射到更复杂的单元格格式

简单格式 格式代码
字符串 @
整数 0
日期 YYYY-MM-DD
日期时间 YYYY-MM-DD HH:MM:SS
时间 HH:MM:SS
价格 #,##0.00
美元 [$$-1009]#,##0.00;[RED]-[$$-1009]#,##0.00
欧元 #,##0.00 [€-407];[RED]-#,##0.00 [€-407]

自版本0.30起,基础单元格样式已可用

样式 允许值
字体 Arial, Times New Roman, Courier New, Comic Sans MS
字体大小 8,9,10,11,12...
字体风格 加粗, 斜体, 下划线, 删除线 或 多个(例如:'加粗,斜体')
边框 左, 右, 上, 下 或 多个(例如:'上,左')
边框样式 纤细, 中等, 加粗, dashDot, dashDotDot, dashed, dotted, double, hair, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot
边框颜色 #RRGGBB, 例如:#ff99cc 或 #f9c
颜色 #RRGGBB, 例如:#ff99cc 或 #f9c
填充 #RRGGBB, 例如:#eeffee 或 #efe
水平对齐 一般, 左, 右, 居中, 两端对齐
垂直对齐 底部, 居中, 分布式

项目介绍

轻量级PHP XLSX Excel 电子表格编写器【此简介由AI生成】

定制我的领域
941.87 K663访问 GitHub