phpexcel - 保存时丢失条件格式

标签 phpexcel

我正在尝试创建一个简单的设置来加载模板、插入一些数据并另存为新文件。但是,我需要对某些单元格进行一些条件格式设置,并且当我获得新创建的文件时,条件格式设置丢失了。它没有被其他一些格式覆盖,条件格式菜单中缺少规则。我使用的是 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/

相关文章:

php - Apache 在 PHP 关联数组的大型 foreach 循环中崩溃

PHPExcel读取单元格的格式

php - 如何获取和设置 phpspreadsheet 的高度和宽度

PHPExcel 将文件保存在文件夹中或打开 excel

php - 如何每30条记录换行

php - 在phpexcel中将文本转换为数字格式

php - PHPExcel_Worksheet 绘图对象的高度和宽度应该使用什么单位?

PHPExcel - 如何简化设置具有 2 种字体大小的单个单元格

php - 如何在mysql中创建一个表,其中表中的字段数等于php中excel文件中的列数?

php - 使用 PHPExcel 将 SQL 数据从数据库导出到 Excel