phpoffice/phpspreadsheet导出数据常用方法

2024-09-22php编程
190

使用composer安装phpoffice/PhpSpreadsheet

composer require phpoffice/PhpSpreadsheet

逐行插入数据:

<?php
    //引入加载文件
    require_once 'vendor/autoload.php';

     // 创建一个新的Spreadsheet对象
    $spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
    // 获取活动的工作表
    $sheet = $spreadsheet->getActiveSheet();

    $header=['姓名','年龄'];//头部标题
    //设置头部标题
    foreach ($header as $i => $Htitle) {
        $column_cell = 'A'.($i+1);
        // 设置头部标题
        $sheet->setCellValue($column_cell, $Htitle);
    }
    //示例数据,视业务而定
    $data=[
        [
            "name"=>"张三",
            "age"=>18
        ],
        [
            "name"=>"李四",
            "age"=>20
        ]
    ];
    $num = 2; //从第二行开始填充数据
    foreach ($data as $i => $row) {
        $row_cell = $num + $i;
        // 设置单元格内容
        $sheet->setCellValue('A'.$row_cell, $row['name']);
        $sheet->setCellValue('B'.$row_cell, $row['age']);
    }

    // // 获取单元格样式对象
    // $style = $sheet->getStyle('A1');

    // // 获取并设置对齐方式
    // $alignment = $style->getAlignment();
    // $alignment->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT);

    // // 应用样式
    // $style->setAlignment($alignment);

    // 导出或保存文件
    $writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
    $writer->setUseDiskCaching(true);//启动磁盘缓存
    $writer->setIncludeCharts(false);//关闭图表
    $writer->setPreCalculateFormulas(false);//关闭公式预计算
    $writer->save('example.xlsx');//保存文件路径需使用绝对路径
?>

批量插入数据:

<?php
    //引入加载文件
    require_once 'vendor/autoload.php';

     // 创建一个新的Spreadsheet对象
    $spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
    // 获取活动的工作表
    $sheet = $spreadsheet->getActiveSheet();
    //示例数据
    $data = [
        ['姓名', '年龄', '城市'],
        ['张三', 25, '北京'],
        ['李四', 30, '上海'],
        ['王五', 28, '广州'],
    ];//填充数据应为二维数组
    $sheet->fromArray($data, null, "A1");//从A1单元格开始填充
    // 导出或保存文件
    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');//使用工厂方法IOFactory::createWriter可创建导出不同格式的Excel文件  
    $writer->save('example.xlsx');//保存文件路径需使用绝对路径
?>
优化手段:

分批处理数据: 不要一次性加载所有数据到内存中,尤其是数据量很大时。可以使用分页或分批加载数据,逐步写入Excel文件。
设置使用磁盘缓存: 在保存之前使用$writer->setUseDiskCaching(true),优化内存的使用和性能;
减少内存占用: 使用$writer->setPreCalculateFormulas(false),关闭公式预计算,减少内存占用。
减少内存占用: 使用$writer->setIncludeCharts(false),关闭图表,减少内存占用。
使用流式写入: 对于大量数据,考虑使用流式写入(streamed writing),例如使用PhpSpreadsheet 中的 PhpOffice\PhpSpreadsheet\Writer\Xlsx 类。
 
The End
PhpSpreadsheet

相关推荐

PhpSpreadsheet生成Excel时实现单元格自动换行
PhpSpreadsheet是PHPExcel的替代版本,PHPExcel的作者已经停止了更新,今天尝试了使用PhpSpreadsheet生成Excel的时候支持单元格内的自动换行,发现用法其实差不多。 先来看一下Excel单元格中的换行,手工输入Alt+Enter可以进行换行,实际上是选择了一个自动...
2024-11-03 php编程
109

phpoffice/phpspreadsheet导出数据常用方法
使用composer安装phpoffice/phpspreadsheet composer require phpoffice/phpspreadsheet 逐行插入数据: ?php //引入加载文件 require_once 'vendor/autoload.php'; // 创建一个新的Spreadsheet对象 $spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadshee...
2024-09-22 php编程
190

使用PhpSpreadsheet导出数据到excel表格
随着Php版本的不断升级,以前的excel读取和导出工具PhpExcel库中的一些语法已经不被识别,而PhpExcel库也停止了维护,现在都转移到另外一个升级版本PhpSpreadSheet库里面来。 以下是本人在近期开发一个简历的excel导出功能时写过的一些PhpSpreadSheet代码,供...
2024-09-22 php编程
133

PHP使用PhpSpreadsheet导出数据的详细操作
PHP使用PhpSpreadsheet导出数据的详细操作,这篇文章主要介绍了PhpSpreadsheet设置单元格常用操作汇总 安装 composer require phpoffice/phpspreadsheet 使用 #在控制中引入use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Writer\Xl...
2024-09-20 php编程
247

phpspreadsheet的使用
在 PHP 中导出 Excel 文件可以使用多种库,其中最流行的是 PhpSpreadsheet。这个库是由 PHPExcel 演变而来的,功能强大且适用于各种 Excel 操作。下面是一个简单的示例,展示如何使用 PhpSpreadsheet 库来创建和导出一个 Excel 文件。 1. 安装 PhpSpreadsheet...
2024-09-19 php编程
131

php使用phpoffice/phpspreadsheet导入导出excel表格
phpoffice/phpspreadsheet引入 composer require phpoffice/phpspreadsheet 导出:可以直接数组导出,注释里代码为循环进行单元格赋值 ?phpuse \PhpOffice\PhpSpreadsheet\Spreadsheet;use \PhpOffice\PhpSpreadsheet\IOFactory;class ErpOrder extends Model...
2022-11-22 php编程
107