fast excel writer

2025-12-07 0 290

FastExcelWriter v.6

FastExcelWriterFastExcelphp项目的一部分,由

  • FastExcelWriter-创建Excel电子表格
  • FastExcelReader-阅读Excel电子表格
  • FastExCeltemplator-生成XLSX模板的Excel电子表格
  • FastExcellaravel-特殊Laravel Edition

介绍

该库设计为轻巧,超快速,需要最少的内存使用量。

FastExcelWriter以XLSX格式创建Excel兼容电子表格(Office 2007+),并支持许多功能:

  • 获取UTF-8编码输入
  • 多个工作表
  • 支持货币/日期/数字单元格式,公式和主动超链接
  • 支持大多数用于细胞,行,列 – 颜色,边框,字体等的样式选项。
  • 您可以设置行的高度和列的宽度(包括自动宽度计算)
  • 您可以在XLSX文件中添加公式,笔记和图像
  • 支持使用/没有密码的工作簿和表格保护
  • 支持页面设置 – 页面边距,页面大小
  • 插入多个图表
  • 支持数据验证和条件格式

跳到:

  • 版本6的更改
    • 版本6.1的重要更改
  • 版本5的更改
    • 版本5.8的重要更改
  • 简单示例
  • 高级示例
  • 添加笔记
  • 添加图像
  • 工作簿
    • 工作簿设置
    • 设置工作簿的元数据
    • 为临时文件设置目录
    • 帮助者方法
  • 床单
    • 创建,选择和删除表
    • 表设置
    • 页面设置
    • 行的设置
    • 列的设置
    • 自动列宽度
    • 组/轮廓行和列
    • 定义名称范围
    • 冷冻窗格和自动滤器
    • 设置活跃的纸张和单元格
    • 打印设置
  • 写作
    • 用第与直接编写行
    • 直接写入细胞
    • 编写单元格值
    • 合并细胞
    • 细胞格式
    • 公式
    • 超链接
    • 使用丰富的文字
  • 样式
    • 样式属性作为数组
    • 定义样式属性的班级样式
    • 细胞样式
    • 行样式
    • 列样式
    • 其他列选项
    • 应用样式(流利的界面)
    • 应用边界
    • 应用字体
    • 应用颜色
    • 应用文字样式
  • 图表
    • 简单用法
    • 组合图
    • 多个图表
    • 图表类型
    • 有用的图表方法
  • 保护工作簿和床单
    • 工作簿保护
    • 保护工作表
    • 细胞锁定/解锁
  • 数据验证
    • 简单用法
    • 定义过滤器
    • 检查价值类型
    • 自定义过滤器
    • 所有数据验证设置
    • 超过64K验证规则
  • 条件格式
    • 简单用法
    • 一般细胞值检查
    • 表达
    • 梯度填充,具体取决于值(颜色等级)
    • 单元格内的数据带(数据库)
  • API参考
  • FastExcelWriter vs phpspreadsheet
  • 您想支持FastExcelWriter吗?

安装

使用composerFastExcelWriter安装到您的项目中:

 composer require avadim/fast-excel-writer

版本6的更改

  • 数据验证支持

版本6.1的重要更改

  • Sheet::setRowOptions()Sheet::setColOptions()Sheet::setRowStyles()Sheet::setColStyles()已弃用,而不是它们应该使用其他功能: setRowStyle()setRowStyleArray()setRowDataStyle()setRowDataStyleArray() setColStyle() setColStyleArray()setColDataStyle()setColDataStyleArray()
  • Sheet::setRowStyle()Sheet::setColStyle()已更改,现在它们为整个行或列设置了样式(即使它们为空)

版本5的更改

  • 一般新闻是图表支持

版本5.8的重要更改

在v.5.8之前

 $ sheet -> writeCell ( 12345 ); // The number 12345 will be written into the cell
$ sheet -> writeCell ( \' 12345 \' ); // The number 12345 will also be written here

在版本5.8及以后

 $ sheet -> writeCell ( 12345 ); // The number 12345 will be written into the cell
$ sheet -> writeCell ( \' 12345 \' ); // Here the string \'12345\' will be written into the cell

如果要保留以前的向后兼容性行为,则在创建工作簿时应使用选项“ auto_convert_number”。

 $ excel = Excel:: create ([ \' Sheet1 \' ], [ \' auto_convert_number \' => true ]);
$ sheet = $ excel -> sheet ();
$ sheet -> writeCell ( \' 12345 \' ); // String \'12345\' will be automatically converted to a number 

版本4的更改

  • 现在图书馆的工作速度更快
  • 添加了一个流利的界面以应用样式。
  • 新方法和代码重构

用法

您可以在下面或在/演示文件夹中找到使用示例

简单示例

 use \\ avadim \\ FastExcelWriter \\ Excel ;

$ data = [
    [ \' 2003-12-31 \' , \' James \' , \' 220 \' ],
    [ \' 2003-8-23 \' , \' Mike \' , \' 153.5 \' ],
    [ \' 2003-06-01 \' , \' John \' , \' 34.12 \' ],
];

$ excel = Excel:: create ([ \' Sheet1 \' ]);
$ sheet = $ excel -> sheet ();

// Write heads
$ sheet -> writeRow ([ \' Date \' , \' Name \' , \' Amount \' ]);

// Write data
foreach ( $ data as $ rowData ) {
    $ rowOptions = [
        \' height \' => 20 ,
    ];
    $ sheet -> writeRow ( $ rowData , $ rowOptions );
}

$ excel -> save ( \' simple.xlsx \' );

另外,您可以将生成的文件下载到客户端(发送到浏览器)

 $ excel = Excel:: create ();
$ sheet = $ excel -> sheet ();

$ sheet -> writeCell ( 12345 ); // write integer
$ sheet -> writeCell ( 123.45 ); // write float
$ sheet -> writeCell ( \' 12345 \' ); // write string
$ sheet -> writeCell ( true ); // write boolean value
$ sheet -> writeCell ( fn () => $ sheet -> getCurrentCell ()); // write result of function

$ excel -> download ( \' download.xlsx \' );

高级示例

 use \\ avadim \\ FastExcelWriter \\ Excel ;

$ head = [ \' Date \' , \' Name \' , \' Amount \' ];
$ data = [
    [ \' 2003-12-31 \' , \' James \' , \' 220 \' ],
    [ \' 2003-8-23 \' , \' Mike \' , \' 153.5 \' ],
    [ \' 2003-06-01 \' , \' John \' , \' 34.12 \' ],
];
$ headStyle = [
    \' font \' => [
        \' style \' => \' bold \'
    ],
    \' text-align \' => \' center \' ,
    \' vertical-align \' => \' center \' ,
    \' border \' => \' thin \' ,
    \' height \' => 24 ,
];

$ excel = Excel:: create ([ \' Sheet1 \' ]);
$ sheet = $ excel -> sheet ();

// Write the head row (sets style via array)
$ sheet -> writeHeader ( $ head , $ headStyle );

// The same result with new fluent interface
$ sheet -> writeHeader ( $ head )
    -> applyFontStyleBold ()
    -> applyTextAlign ( \' center \' , \' center \' )
    -> applyBorder (Style:: BORDER_STYLE_THIN )
    -> applyRowHeight ( 24 );

// Sets columns options - format and width (the first way)
$ sheet
    -> setColFormats ([ \' @date \' , \' @text \' , \' 0.00 \' ])
    -> setColWidths ([ 12 , 14 , 5 ]);

// The seconds way to set columns options
$ sheet
    // column and options
    -> setColDataStyle ( \' A \' , [ \' format \' => \' @date \' , \' width \' => 12 ])
    // column letter in lower case
    -> setColDataStyle ( \' b \' , [ \' format \' => \' @text \' , \' width \' => 24 ])
    // column can be specified by number
    -> setColDataStyle ( 3 , [ \' format \' => \' 0.00 \' , \' width \' => 15 , \' color \' => \' #090 \' ])
;

// The third way - all options in multilevel array (first level keys point to columns)
$ sheet
    -> setColDataStyle ([
        \' A \' => [ \' format \' => \' @date \' , \' width \' => 12 ],
        \' B \' => [ \' format \' => \' @text \' , \' width \' => 24 ],
        \' C \' => [ \' format \' => \' 0.00 \' , \' width \' => 15 , \' color \' => \' #090 \' ],
    ]);

$ rowNum = 1 ;
foreach ( $ data as $ rowData ) {
    $ rowOptions = [
        \' height \' => 20 ,
    ];
    if ( $ rowNum % 2 ) {
        $ rowOptions [ \' fill-color \' ] = \' #eee \' ;
    }
    $ sheet -> writeRow ( $ rowData , $ rowOptions );
}

$ excel -> save ( \' simple.xlsx \' );

添加笔记

Excel和注释中当前有两种评论类型(请参阅线程注释和注释之间的区别)。注释是Excel中的旧样式评论(在浅黄色背景上的文字)。您可以使用方法addNote()向任何单元格添加注释

 $ sheet -> writeCell ( \' Text to A1 \' );
$ sheet -> addNote ( \' A1 \' , \' This is a note for cell A1 \' );

$ sheet -> writeCell ( \' Text to B1 \' )-> addNote ( \' This is a note for B1 \' );
$ sheet -> writeTo ( \' C4 \' , \' Text to C4 \' )-> addNote ( \' Note for C1 \' );

// If you specify a range of cells, then the note will be added to the left top cell
$ sheet -> addNote ( \' E4:F8 \' , \" This note \\n will added to E4 \" );

// You can split text into multiple lines
$ sheet -> addNote ( \' D7 \' , \" Line 1 \\n Line 2 \" );

您可以更改一些注释选项。注释的允许选项是:

  • 宽度– 默认值为\'96pt\'
  • 高度– 默认值是\'55.5pt\'
  • fill_color-默认值为\'#FFFFE1\'
  • 显示– 默认值为false
 $ sheet -> addNote ( \' A1 \' , \' This is a note for cell A1 \' , 
    [ \' width \' => \' 200pt \' , \' height \' => \' 100pt \' , \' fill_color \' => \' #ffcccc \' ]);

// Parameters \"width\" and \"height\" can be numeric, by default these values are in points
// The \"fill_color\" parameter can be shortened
$ noteStyle = [
    \' width \' => 200 , // equivalent to \'200pt\'
    \' height \' => 100 , // equivalent to \'100pt\'
    \' fill_color \' => \' fcc \' , // equivalent to \'#ffcccc\'
];
$ sheet -> writeCell ( \' Text to B1 \' )-> addNote ( \' This is a note for B1 \' , $ noteStyle );

// This note is visible when the Excel workbook is displayed
$ sheet -> addNote ( \' C8 \' , \' This note is always visible \' , [ \' show \' => true ]);

另外,您可以在笔记中使用丰富的文字

 $ richText = new \\ avadim \\ FastExcelWriter \\ RichText ( \' here is <c=f00>red</c> and <c=00f>blue</c> text \' );
$ sheet -> addNote ( \' C8 \' , $ richText );

有关使用丰富文本的更多信息,请参见此处:使用丰富的文本

添加图像

您可以在base64中将图像插入到本地文件,URL或图像字符串中

 $ sheet -> addImage ( $ cell , $ imageFile , $ imageStyle );

// Insert an image to the cell A1 from local path
$ sheet -> addImage ( \' A1 \' , \' path/to/file \' );

// Insert an image to the cell A1 from URL
$ sheet -> addImage ( \' A1 \' , \' https://*sit*e.com*/image.jpg \' );

// Insert an image to the cell A1 from base64 string
$ sheet -> addImage ( \' A1 \' , \' data:image/jpeg;base64,/9j/4AAQ... \' );

// Insert an image to the cell B2 and set with to 150 pixels (height will change proportionally)
$ sheet -> addImage ( \' B2 \' , \' path/to/file \' , [ \' width \' => 150 ]);

// Set height to 150 pixels (with will change proportionally)
$ sheet -> addImage ( \' C3 \' , \' path/to/file \' , [ \' height \' => 150 ]);

// Set size in pixels
$ sheet -> addImage ( \' D4 \' , \' path/to/file \' , [ \' width \' => 150 , \' height \' => 150 ]);

// Add hyperlink to the image
$ sheet -> addImage ( \' D4 \' , \' path/to/file \' , [ \' width \' => 150 , \' height \' => 150 , \' hyperlink \' => \' https://www.g**oog*le.com/ \' ]);

图像样式的可用键:

  • “宽度” – 图像的宽度
  • “高度” – 图像高度
  • “超链接” – 超链接的URL
  • \’x\’ – 相对于单元格的左边界相对于像素的偏移
  • \’y\’ – 相对于单元格的顶部边界相对于像素的偏移

重要:在MS Excel中,值“ X”不能大于亲属单元的列宽度,并且值“ y”不能大于行高度

共享字符串

默认情况下,字符串直接写入床单。这会增加文件大小,但会加快数据编写并节省内存。如果要将字符串写入共享字符串XML,则需要使用“共享_String”选项。

 $ excel = Excel:: create ([], [ \' shared_string \' => true ]);

FastExcelWriter vs phpspreadsheet

Phpspreadsheet是一个完美的库,具有阅读和编写许多文档格式的精彩功能。 FastExcelWriter只能写入XLSX格式,但是它的内存使用量很快,并且使用最少。

FastExcelWriter

  • 7-9倍更快
  • 使用8-10次使用的记忆更少
  • 支持编写大型100k+行电子表格

Phpspreadsheet的基准(无样式的生成)

行X Cols 时间 记忆
1000 x 5 0.98秒 2,048 kb
1000 x 25 4.68秒 14,336 kb
5000 x 25 23.19秒 77,824 kb
10000 x 50 105.8秒 256,000 kb

FastExcelwriter的基准(无样式的生成)

行X Cols 时间 记忆
1000 x 5 0.19秒 2,048 kb
1000 x 25 1.36秒 2,048 kb
5000 x 25 3.61秒 2,048 kb
10000 x 50 13.02秒 2,048 kb

您想支持FastExcelWriter吗?

如果您发现此包装有用,则可以支持我喝杯咖啡:

  • USDT(TRC20)tssufvjehqbjckeygnnr1cpswy6jznbzk7
  • USDT(ERC20)0x5244519D65035AF868A010C2F68A086F473FC82B
  • ETH 0x5244519D65035AF868A010C2F68A08A086F473FC82B

或者只是在github上给我一颗星星:)

下载源码

通过命令行克隆项目:

git clone https://github.com/aVadim483/fast-excel-writer.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 fast excel writer https://www.zuozi.net/31925.html

DuckieTV
上一篇: DuckieTV
ASPNetCoreGraphQL
下一篇: ASPNetCoreGraphQL
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务