使用 phpOffice\PhpSpreadsheet 做导出功能
安装
composer install phpoffice/phpspreadsheet
创建 execl 文件
use PhpOffice\PhpSpreadsheet\Spreadsheet;
# 声明Execl对象
$objPHPExcel = new Spreadsheet();
# 指定工作间
$sheet = $objPHPExcel->setActiveSheetIndex(0);
保存文件到服务器
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$writer = new Xlsx($objPHPExcel);
$fileName = './xlsx/' . date('YmdHis') . '.xlsx';
$writer->save($fileName);
将文件输出到浏览器
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$writer = new Xlsx($objPHPExcel);
ob_start(); // 开启缓存区
$fileName = './xlsx/' . date('YmdHis') . '.xlsx';
$writer->save($fileName);
$c = ob_get_contents(); // 获取缓存区内容
ob_flush(); // 输出缓存区
flush();
注意
两个函数都是用来刷新输出缓冲区的。但是它们的作用不同。
ob_flush()
函数将输出缓冲区中的内容发送到服务器,使得服务器立即发送数据到客户端浏览器。但是,这并不意味着所有数据都会被浏览器接收和显示出来。因为HTTP协议是分块传输的,数据可能只被一部分接收并显示,而另一部分在后续传输中才被接收和显示。因此,如果需要确保数据被完整地传输并显示出来,需要使用flush()
。
flush()
函数将输出缓冲区中的内容立即发送到客户端,并等待客户端确认完成后再继续执行脚本。这可以确保数据被完整地传输给浏览器,并且在服务器和浏览器之间建立了一条可靠的连接。但是,flush()
函数的执行会造成脚本的阻塞,直到客户端接收并确认完成,因此需要谨慎使用。
作者:双月鸟
链接:https://www.jianshu.com/p/0a8514929e24
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。