Excel 中的空白值打印为零

Blank values printing as zero in Excel

我有一份类似于此的报告:

我有一个公式计算代表 1 月到 12 月的单元格的平均值(YEARLY AVERAGE 列)。但是,我不想考虑我们尚未达到的月份。例如formula/code计算平均值:

$objPHPExcel->getActiveSheet()->setCellValue('N' . $i,'=AVERAGE(B' . $i . ':M' . $i .')');

$i 代表我正在迭代以动态填充我的报告的行。为了方便:

$objPHPExcel->getActiveSheet()->setCellValue('N4','=AVERAGE(B4:M4)');

JAN-DEC 报告数据源自我构建的数组,如下所示:

array(12) {
  [1]=>
  int(0)
  [2]=>
  int(0)
  [3]=>
  int(0)
  [4]=>
  int(0)
  [5]=>
  int(0)
  [6]=>
  int(0)
  [7]=>
  int(0)
  [8]=>
  int(0)
  [9]=>
  string(15) "176.80000000000"
  [10]=>
  string(15) "707.61290322580"
  [11]=>
  string(0) ""
  [12]=>
  string(0) ""
}

代表 NOV 和 DEC 的最后两个数组值是 "" 值,但是它们在报告中被打印为零。

我的问题是,这是打印到文档时需要调整的某种格式吗?即:

foreach(range('B','M') as $columnID){
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($columnID . $i, round($data[$k],2));             
}

或者我是否需要在构建数组时以不同方式存储值?即:

if($m <= (int)$this_month){
    $data[$m] = 0;
}
else{                           
    $data[$m] = '';
}

您对

的使用
round($data[$k],2))

会将空字符串转换为浮点数,这就是 round() 所做的

如果您想保留空字符串,则不要尝试四舍五入该值,标准的 PHP 方法是使用 if 测试和四舍五入或不t相应地四舍五入