(我正在使用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);
答案 0 :(得分:1)
变通方法类型的解决方案是选择相应工作表中的所有单元格,并选择背景颜色“无”。
显然,细胞是白色的,这种着色覆盖了条件色。
答案 1 :(得分:0)
这可能是一个错误,因为对于单元格中的实体填充,Excel会反转前景色和背景色的含义,但在条件(dxf)格式中则不会。
或者,换句话说,背景和前景对于单元格和条件格式的存储方式不同。
Perl Excel :: Writer :: XLSX模块中的