条件格式不起作用

时间:2012-11-15 17:02:35

标签: excel-2010 phpexcel

(我正在使用PHPExcel 1.7.8)

我创建了一个工作表并用数字数据表填充它。然后Excel拒绝将3色转换类型的条件格式应用于数字数据。

这也意味着:

1)我可以使用“前10个值”类型的条件格式

2)如果我在生成的表旁边填充了几个带数字的单元格,那么我可以使用过渡类型的cond格式

3)如果我以简单的复制/粘贴方式从生成的表中复制两个单元格仍然无法使用过渡格式

4)如果我使用“只是值”-pasting从生成的表中复制两个单元格,我可以使用过渡格式

这里的另一个重要观察是,当我选择生成的表格的一个单元格并点击进入数值栏时 - 就在那一刻 - 单元格将其颜色更改为应该关于的颜色条件格式化!

这有点类似于我在PHPExcel生成的电子表格中观察到的另一种现象。有时会发生这种情况,当我双击进入一个单元格进入编辑模式时 - 单元格会变成黑色。但我仍然可以改变价值。

我猜想在Excel文件中如何表示单元格似乎有问题。与控制着色有关的东西......!

我当然可以复制/(值 - )粘贴所有内容。但也许我只是错误地使用PHPExcel?或者有一种快速的方法可以以有用的方式一次转换Excel文件?

我使用的完整代码是:

$excelWorkbook = null;

    if(file_exists($filename)) {
        $reader = PHPExcel_IOFactory::createReader("Excel2007");
        $excelWorkbook = $reader->load($filename);
    } else {
        $excelWorkbook = new PHPExcel();
    }


    $sheet = $excelWorkbook->getSheetByName($tabName);

    if ($sheet !== null) {
        $excelWorkbook->removeSheetByIndex($excelWorkbook->getIndex($sheet));
    }

    $sheet = new PHPExcel_Worksheet($excelWorkbook, $tabName);
    $sheet = $excelWorkbook->addSheet($sheet);

    $columns = array_keys($targetArray);
    $rows = array_keys($targetArray[$columns[0]]);

    for($i = 0; $i < count($columns); $i++){
        $sheet->setCellValueByColumnAndRow($i+1,1,$columns[$i]);
    }

    for($i = 0; $i < count($rows); $i++){
        $sheet->setCellValueByColumnAndRow(0,$i+2,$rows[$i]);
    }

    for($i = 0; $i < count($columns); $i++){
        for($j = 0; $j < count($rows); $j++) {
            $sheet->setCellValueByColumnAndRow($i+1, $j+2, $targetArray[$columns[$i]][$rows[$j]]);
        }
    }

    $excelWorkbook->setActiveSheetIndex($excelWorkbook->getIndex($sheet));

    $xlsx = new PHPExcel_Writer_Excel2007($excelWorkbook);
    $xlsx->save($filename);

2 个答案:

答案 0 :(得分:1)

变通方法类型的解决方案是选择相应工作表中的所有单元格,并选择背景颜色“无”。

显然,细胞是白色的,这种着色覆盖了条件色。

答案 1 :(得分:0)

这可能是一个错误,因为对于单元格中的实体填充,Excel会反转前景色和背景色的含义,但在条件(dxf)格式中则不会。

或者,换句话说,背景和前景对于单元格和条件格式的存储方式不同。

Perl Excel :: Writer :: XLSX模块中的

I encountered this issue