遇到这个一个问题,需要生成带水印的Excel文件,具体思路如下:先设置一个调好格式的Excel文件作为模板,再用PHP以模板文件填充,并生成新的Excel文件,这样新的文件就和模板文件格式一致。程序用到了PhpSpreadsheet,步骤如下:
1、下载PhpSpreadsheet扩展,命令:
composer require phpoffice/phpspreadsheet
至于怎么安装composer,以及怎么设置国内镜像等问题本文不着讨论。
2、phpspreadsheet安装完成后就直接上代码:
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; //指定模板文件所在位置 $template = 'template.xlsx'; $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($template); //将活动工作表索引设置为第一个工作表: $spreadsheet->setActiveSheetIndex(0); //获取活动工作表 $worksheet = $spreadsheet->getActiveSheet(); //填充数据 $worksheet->getCell('A2')->setValue('1'); $worksheet->getCell('B2')->setValue('张三'); $worksheet->getCell('C2')->setValue('项目'); $worksheet->getCell('D2')->setValue('项目'); $worksheet->getCell('E2')->setValue('项目'); $worksheet->getCell('F2')->setValue('项目'); //继续填充数据 $worksheet->getCell('A3')->setValue('2'); $worksheet->getCell('B3')->setValue('李四'); $worksheet->getCell('C3')->setValue('项目'); $worksheet->getCell('D3')->setValue('项目'); $worksheet->getCell('E3')->setValue('项目'); $worksheet->getCell('F3')->setValue('项目'); //将填充好数据的工作表保存 $writer = new Xlsx($spreadsheet); $writer->save('newfile.xlsx');
程序运行截图如下:
模板文件效果
生成的文件效果