(我正在使用 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);