1

(我正在使用 PHPExcel 1.7.8)

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

这也意味着:

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

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

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

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

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

这有点类似于我在 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);
4

2 回答 2

1

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

显然,单元格是白色的,这种颜色覆盖了条件颜色。

于 2012-11-16T12:44:50.273 回答
0

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

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

我在 Perl Excel::Writer::XLSX 模块中遇到了这个问题。

于 2012-11-16T14:14:27.203 回答