为性能而生, PHP Excel 扩展 xlswriter 1.3.3 发布! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vikin
V2EX    PHP

为性能而生, PHP Excel 扩展 xlswriter 1.3.3 发布!

  •  2
     
  •   Vikin 2019-12-27 11:20:35 +08:00 5257 次点击
    这是一个创建于 2120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    xlswriter 是一个 PHP C 扩展,可用于在 Excel 2007+ XLSX 文件中读取数据,插入多个工作表,写入文本、数字、公式、日期、图表、图片和超链接。

    它具备以下特性:

    一、写入
    • 100 %兼容的 Excel XLSX 文件
    • 完整的 Excel 格式
    • 合并单元格
    • 定义工作表名称
    • 过滤器
    • 图表
    • 数据验证和下拉列表
    • 工作表 PNG/JPEG 图像
    • 用于写入大文件的内存优化模式
    • 适用于 Linux,FreeBSD,OpenBSD,OS X,Windows
    • 编译为 32 位和 64 位
    • FreeBSD 许可证
    • 唯一的依赖是 zlib
    二、读取
    • 完整读取数据
    • 光标读取数据
    • 按数据类型读取
    • xlsx 转 CSV

    基准测试

    测试环境: Macbook Pro 13 inch, Intel Core i5, 16GB 2133MHz LPDDR3 Memory, 128GB SSD Storage.

    导出

    两种内存模式导出 100 万行数据(每行 27 列,数据类型均为字符串,单个字符串长度为 19 )

    • 普通模式:耗时29S,内存只需2083MB
    • 固定内存模式:仅需52S,内存仅需<1MB
    导入

    100 万行数据(单行 1 列,数据类型为 INT )

    • 全量模式:耗时3S,内存仅558MB
    • 游标模式:耗时2.8S,内存仅<1MB

    部分特性示例

    XLSX 转 CSV [常规模式]

    应用场景

    • 较多的 xlsx 文件碎片,合并为单一 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'); // 将 xlsx 文件写入 CSV $resultBoolOne= $excel->openFile('tutorial.xlsx') ->openSheet() ->putCSV($fp); // 将 xlsx 文件追加写入 CSV $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。

    仓库地址

    Github:https://github.com/viest/php-ext-excel-export

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

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

    文档

    https://xlswriter-docs.viest.me

    End

    最后的最后请不要忘记 star

    4 条回复    2019-12-27 12:36:20 +08:00
    codespots
        1
    codespots  
       2019-12-27 11:43:30 +08:00
    不错,点赞
    U7Q5tLAex2FI0o0g
        2
    U7Q5tLAex2FI0o0g  
       2019-12-27 11:52:30 +08:00
    看起来很不错的样子
    zhs227
        3
    zhs227  
       2019-12-27 12:31:32 +08:00
    很强大,文档也做的很好看。
    sunorg
        4
    sunorg  
       2019-12-27 12:36:20 +08:00
    贡献了第一个 star,跟抢到了第一个沙发一样爽
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1138 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 23:34 PVG 07:34 LAX 16:34 JFK 19:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86