PHP-Xlswriter高性能导出Excel
2023-12-20 19:33:30
使用背景 使用传统的PHPExcel导出效率太慢,并且资源占用高,数据量大的情况,会导致服务占用大量的资源,从而导致生产意味,再三思索后,决定使用其他高效率的导出方式
PHP-Xlswriter
PHPExcel 因为内存消耗过大的原因不能正常工作, 虽然可以修改内存上限, 但是导出的用时会变得非常的长,不能接受。而其在PHP7及以上版本上面的替代者PhpSpreadsheet的在内存消耗和性能方面的表现更差,几乎没有办法使用。PHP-Xlswriter 是一个 PHP C 扩展,实现的功能是用C语言实现的,性能非常出色,通过使用PHP C扩展这个桥梁,将C语言的功能扩展到PHP中来。安装步骤
推荐使用pecl安装wget https://pecl.php.net/get/xlswriter-1.5.5.tgz
tar -zxvf xlswriter-1.5.5.tgz
cd xlswriter-1.5.5/
/www/server/php/72/bin/phpize
./configure --with-php-config=/www/server/php/72/bin/php-config
make && make install
echo "extension = xlswriter.so" >> /www/server/php/72/etc/php.ini
查看是否安装成功
php -m
下面是使用代码
<?php
namespace cp\payaialert\services\excel;
use Vtiful\Kernel\Excel;
use Vtiful\Kernel\Format;
/**
* 高性能导出excel
* @ExcelXlswrite
* @Author: linruxian
*/
class ExcelXlswrite
{
public function export($runtimePath,$header,$data)
{
$runtimePath = \Yii::$app->runtimePath . '/strong/payaialert/';
$config = [
'path' => $runtimePath,
];
$excel = new Excel($config);
// fileName 会自动创建一个工作表,你可以自定义该工作表名称,工作表名称为可选参数
$fileObject = $excel->fileName(time(). '.xlsx', 'sheet1');
$fileHandle = $fileObject->getHandle();
$format = new Format($fileHandle);
$colorOneStyle = $format
->font('微软雅黑')
->fontSize(12)
->bold()
->align(Format::FORMAT_ALIGN_CENTER, Format::FORMAT_ALIGN_VERTICAL_CENTER)
->toResource();//标题行格式
$format = new Format($excel->getHandle());
$colorTwoStyle = $format
->font('微软雅黑')
->fontSize(12)
->align(Format::FORMAT_ALIGN_CENTER, Format::FORMAT_ALIGN_VERTICAL_CENTER)
->toResource();//数据行格式
$filePath = $fileObject
->defaultFormat($colorOneStyle)
->header(['Item', 'Cost'])
->defaultFormat($colorTwoStyle)
->freezePanes(1, 0)// 冻结第一行
->gridline(Excel::GRIDLINES_SHOW_SCREEN) // 设置工作表网格线
->data([
['Rent', 1000],
['Gas', 100],
['Food', 300],
['Gym', 50],
])
->output();
flush();
// 关闭当前打开的所有文件句柄 并 回收资源
$excel->close();
}
}
文章来源:https://blog.csdn.net/csdn876280441/article/details/135115336
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!