我正在尝试创建一个简单的设置来加载模板、插入一些数据并另存为新文件。但是,我需要对某些单元格进行一些条件格式设置,并且当我获得新创建的文件时,条件格式设置丢失了。它没有被其他一些格式覆盖,条件格式菜单中缺少规则。我使用的是 PHP 5.2、PHPExcel 1.7.8 和 Excel 2010。
<?php
class template {
static $objPHPExcel;
function __construct() {
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
require_once '../Classes/PHPExcel/IOFactory.php';
if (!file_exists("template.xlsx")) {
exit("template missing." . EOL);
}
echo date('H:i:s') , " Load from Excel2007 file" , EOL;
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(false);
self::$objPHPExcel = $objReader->load("template.xlsx");
}
function insertdata($dataArray){ /* unused */ }
function save($name){
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
require_once '../Classes/PHPExcel/IOFactory.php';
echo date('H:i:s') , " Write to Excel2007 format" , EOL;
$objWriter = PHPExcel_IOFactory::createWriter(self::$objPHPExcel, 'Excel2007');
$objWriter->save($name);
echo date('H:i:s') , " File written to: ".$name , EOL;
}
$temp=new template();
$temp->save("savethis.xlsx");
我正在尝试保留分级 2 色阶(基于单元格值的格式,最小值类型为 Number=1,最大值类型为 Number=10)。有问题的单元格附加了一个引用另一个工作表的公式(所有数据都已正确保存)。
最佳答案
我发现无法读取、修改和保存从原始文件中获取“自动过滤器”、“数据验证”和“条件格式”的 XLS/XLSX 文件,我发现的最终解决方案是使用PHPExcel 库。
可悲的是,正如在另一个答案( https://stackoverflow.com/a/13172890/218418 )中所述:
PHPExcel is not a library for "editing" workbook files: you're not using PHPExcel to change a file, you're changing a PHPExcel object that can be loaded from a file, and can subsequently be written to a file.
我很高兴使用模板“编辑”Excel 文件之类的操作只进行数据验证、条件格式和自动过滤是不可能的,但我理解。
关于phpexcel - 保存时丢失条件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13584033/