空白值在Excel中打印为零

时间:2015-10-01 14:16:25

标签: php phpexcel

我的报告看起来与此类似:

enter image description here

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

$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的最后两个数组值是""值,但它们在报告中打印为零。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您使用

round($data[$k],2))

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

如果你想保留空字符串,那么不要尝试舍入值,而标准的PHP方法是使用if测试并舍入或不相应舍入