You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHPExcel操作Excel模板图表丢失,求可保留元素的PHP编辑库

问题:PHPExcel填充Excel模板后图表丢失,寻求替代PHP库

我尝试用PHPExcel加载Excel2007模板文件,填充单元格数据,虽然已经设置了setIncludeCharts(TRUE),但生成的文件里图表还是丢失了,多次尝试都解决不了。现在需要找其他PHP库,要求能打开.xlsx/.xlsm模板填充数据,并且完整保留图表、数据透视表、宏、表单、按钮这些元素,只需要从数据库取数据填充单元格即可。

我的PHPExcel代码如下:

<?php
date_default_timezone_set('Europe/London');
require_once 'excel/PHPExcel/IOFactory.php';
require_once 'excel/PHPExcel.php';

$objPHPExcel = new PHPExcel();

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setIncludeCharts(TRUE);
$objPHPExcel = $objReader->load('WorkingFile_Daily.xlsx'); 
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('B11', 4)
->setCellValue('B12', 5)
->setCellValue('B13', 6)       
->setCellValue('B14', 7);

 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
 $objWriter->setIncludeCharts(TRUE);
 $objWriter->save('WorkingFile_Daily New.xlsx');
 ?>

推荐的替代PHP库

1. PhpSpreadsheet(PHPExcel官方继任者)

PHPExcel已停止维护,PhpSpreadsheet是官方替代项目,对图表、宏等复杂元素的支持更稳定完善,能直接读取.xlsx/.xlsm模板,填充数据后完整保留原有格式与元素。

核心使用示例:

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

// 读取模板
$reader = IOFactory::createReader('Xlsx');
$reader->setIncludeCharts(true);
$spreadsheet = $reader->load('WorkingFile_Daily.xlsx');

// 填充单元格数据
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->setCellValue('B11', 4)
          ->setCellValue('B12', 5)
          ->setCellValue('B13', 6)
          ->setCellValue('B14', 7);

// 保存文件,保留图表等元素
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->setIncludeCharts(true);
$writer->save('WorkingFile_Daily New.xlsx');

注意:处理带宏的.xlsm文件时,需替换为Xlsm读写器(createReader('Xlsm')、createWriter($spreadsheet, 'Xlsm')),才能完整保留宏、表单按钮等元素。

2. 其他备选(优先级低于PhpSpreadsheet)

  • Spout:主打高效处理大型Excel文件,但对图表、数据透视表等复杂元素的支持有限,仅适合纯数据读写场景。
  • PHPExcel社区分支:部分社区分支修复了PHPExcel的图表丢失问题,但项目维护性差,不推荐长期使用。

关键注意事项

  • 填充数据时仅修改单元格值,不要改动模板中原有的样式、图表数据源关联,避免破坏原有元素。
  • 确保使用对应格式的读写器处理.xlsx和.xlsm文件,否则会丢失宏等专属元素。

内容的提问来源于stack exchange,提问作者Sameer Sashittal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:24:30