如何在Symfony 4中使用PHP创建Excel文件

本文概述

  • 1.安装PHPSpreadsheet
  • 2.通过创建Excel文件
如今, 在Web应用程序开发中创建excel文件是必须的, 作为开发人员, 你必须了解以你喜欢的语言创建它的可用新技术。自2015年以来, 最新的PHPExcel版本1.8.1已发布, 每个人都在官方存储库中收到一条消息, 该项目将不再维护且不再使用。
但是不用担心, 这不是像没有办法使用该库生成更多的excel文件。取而代之的是, 发布了具有相同名称的相同版本PHPOffice的新版本, 即新名称, 即PHPSpreadsheet库。该库PhpSpreadsheet是用纯PHP编写的库, 旨在提供一组类, 使你可以读取和写入不同的电子表格文件格式, 例如Excel和LibreOffice Calc。该库提供以下支持:
格式 阅读 写作
打开文档格式/ OASIS(.ods) ? ?
Office Open XML (.xlsx) Excel 2007 and above ? ?
BIFF 8 (.xls) Excel 97 and above ? ?
BIFF 5 (.xls) Excel 95 ?
SpreadsheetML (.xml) Excel 2003 ?
字母数字 ?
的HTML ? ?
西尔克 ?
CSV ? ?
PDF (using either the TCPDF, Dompdf or mPDF libraries, which need to be installed separately) ?
作为使用最新版本中所有内容的人, 我们不会教你如何使用旧库创建excel文件, 而是使用新库。在本文中, 我们将向你展示如何在基于Symfony 4的项目中安装该库以使用PHP创建Excel文件。
1.安装PHPSpreadsheet【如何在Symfony 4中使用PHP创建Excel文件】建议使用composer来安装PHPExcel后继PHPSpreadsheet。在symfony 4项目的根目录中打开一个终端, 然后运行以下命令:
composer require phpoffice/phpspreadsheet

这会将phpoffice / phpspreadsheet软件包作为依赖项添加到你的Symfony 4项目中, 并将进行安装。有关这些方法的更多信息, 更多示例不了解Symfony 4, 而是excel本身, 请访问PHPSpreadsheet的Github官方存储库或此处的官方文档。
2.通过创建Excel文件通常, 作为开发人员, 你将边做边学, 这意味着编写和运行一些代码!我们将向你展示一些你经常需要的传统示例, 这种情况是在磁盘上创建一个excel文件(在路径中保存一个excel文件)和一个流式响应(一个内联处置文件):
A.将excel文件写入本地目录
如果愿意在服务器磁盘中创建文件, 则可以使用直接写入磁盘的库的传统保存方法。只需提供要保存目录的绝对路径和文件名即可(请确保该目录存在并且你具有给定目录的写许可权):
< ?phpnamespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\Controller\Controller; // Include PhpSpreadsheet required namespacesuse PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class DefaultController extends Controller{public function index(){$spreadsheet = new Spreadsheet(); /* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */$sheet = $spreadsheet-> getActiveSheet(); $sheet-> setCellValue('A1', 'Hello World !'); $sheet-> setTitle("My First Worksheet"); // Create your Office 2007 Excel (XLSX Format)$writer = new Xlsx($spreadsheet); // In this case, we want to write the file in the public directory$publicDirectory = $this-> get('kernel')-> getProjectDir() . '/public'; // e.g /var/www/project/public/my_first_excel_symfony4.xlsx$excelFilepath =$publicDirectory . '/my_first_excel_symfony4.xlsx'; // Create the file$writer-> save($excelFilepath); // Return a text response to the browser saying that the excel was succesfully createdreturn new Response("Excel generated succesfully"); }}

B.生成Excel文件响应(附件)
默认情况下, 使用PHP时, 响应逻辑会因所使用的框架或你自己编写的逻辑而有很大不同, 这就是为什么该库仅允许写入特定目录的原因。但是, 当你即时生成excel文件时, 这没有用, 因为你需要照顾好文件, 创建它们并删除它们。
如果遵循上述逻辑, 则生成excel文件可能会令人头疼, 因此最简单的方法是使用PHP在系统上生成一个临时文件, 然后将excel内容写入其中, 然后生成具有自定义名称的文件(临时文件将在一段时间后被系统删除)。要将文件作为附件返回, 我们将使用Symfony基本控制器的文件帮助器。此类包括一些用于常见控制器任务的辅助方法, 并提供对服务容器的直接访问。我们需要的辅助方法称为file, 以简化二进制文件的提供。使用file()助手的最简单方法是传递文件的下载路径。浏览器将强制下载此文件, 并将为其分配与原始文件相同的名称:
< ?phpnamespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\ResponseHeaderBag; // Include PhpSpreadsheet required namespacesuse PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class DefaultController extends Controller{public function index(){$spreadsheet = new Spreadsheet(); /* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */$sheet = $spreadsheet-> getActiveSheet(); $sheet-> setCellValue('A1', 'Hello World !'); $sheet-> setTitle("My First Worksheet"); // Create your Office 2007 Excel (XLSX Format)$writer = new Xlsx($spreadsheet); // Create a Temporary file in the system$fileName = 'my_first_excel_symfony4.xlsx'; $temp_file = tempnam(sys_get_temp_dir(), $fileName); // Create the excel file in the tmp directory of the system$writer-> save($temp_file); // Return the excel file as an attachmentreturn $this-> file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE); }}

请注意, 生成的excel文件非常简单, 我们只写了一个单元格, 但是本文重点介绍了如何使用symfony 4控制器生成, 保存和下载该文件。有关PHPSpreadsheet库本身的更多文档, 请不要忘记访问其文档。
编码愉快!

    推荐阅读