PHPExcel设置日期格式,无需编写每个值

时间:2014-06-21 22:41:08

标签: php phpexcel date-format

我输出到Excel文件的当前代码版本如下:

我有一个列名数组和一个包含所有数据的数组:

$objPHPExcel->getActiveSheet()->setTitle($titleArr[$i]);                
$objPHPExcel->getActiveSheet()->fromArray($headersArr[$i], NULL, 'A1');
$objPHPExcel->getActiveSheet()->fromArray($dataArr[$i], NULL, 'A2');

我唯一要做的就是自动调整列

$objPHPExcel->getActiveSheet()
                              ->getColumnDimension($col)
                              ->setAutoSize(true);

有没有办法让工作表填充数组中的数据,并告诉excel某些列实际上是否采用特定格式?

以下内容在Excel中创建自定义字段,而不是日期字段。它排序但我必须手动告诉它将其视为一个数字。

$objPHPExcel->getActiveSheet()->getStyle($col . '2:' . $col. '500')->getNumberFormat()->setFormatCode('yyyy-mm-dd hh:mm:ss');

有没有办法让它像日期一样对待它,而不必手动编写每个单元格,如:

$objPHPExcel->getActiveSheet()->SetCellValueByColumnAndRow(3, $currentrow, PHPExcel_Shared_Date::PHPToExcel($timestamp));

$objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(3, $currentrow)->getNumberFormat()->setFormatCode('dd/mm/yyyy');

3 个答案:

答案 0 :(得分:0)

Excel中没有date field这样的东西....日期只不过是带格式掩码的数字。

但您可以尝试使用单元格绑定器:只要在单元格中设置值,就会调用单元格绑定器(除非您将值设置为显式)。高级值绑定器作为PHPExcel的选项提供,可识别大多数日期和时间格式,并相应地自动转换和设置格式掩码。

答案 1 :(得分:0)

如果整个列仅填充了日期值,则可以使用getStyle()代替getStyleByColumnAndRow()来获取整个列。像这样:

$objPHPExcel->getActiveSheet()->getStyle('C:C')->getNumberFormat()->setFormatCode('dd/mm/yyyy');

格式为A:A的坐标转换为A1:A1048576。同样适用于1:1,转换为A1:XFD1。有关不同的转化,请参阅setSelectedCells() in Worksheet.php

答案 2 :(得分:0)

我在$objPHPExcel->getActiveSheet()->fromArray之后设置日期时间,如下所示:

while ($row = mysql_fetch_assoc($result)) {
  $objPHPExcel->getActiveSheet()->fromArray($row, null, "A".$red);

  // Again set row values
  $dateValuerr = PHPExcel_Shared_Date::PHPToExcel(strtotime($row[NasDatumPrijemaPredmeti]));
  $objPHPExcel->getActiveSheet()->setCellValue("D".$red."", $dateValuerr);

  $dateValuerr = PHPExcel_Shared_Date::PHPToExcel(strtotime($row[NjihovDatumPrijemaPredmeti]));
  $objPHPExcel->getActiveSheet()->setCellValue("E".$red."", $dateValuerr);

  $objPHPExcel->getActiveSheet()->getStyle("A".$red.":AF".$red)->applyFromArray($table_style);
  $objPHPExcel->getActiveSheet()->getStyle("A".$red.":AF".$red)->getFont()->setBold(true);
  $red++;
};

然后设置列

$objPHPExcel->getActiveSheet()->getStyle('D2:E1000')->getNumberFormat()->setFormatCode(exportdatum);

My date is : define('exportdatum', 'dd.mm.yyyy'); // Date

这是MySql DB中的日期

MySql Date : 2015-05-01
But I convert in query to 

 DATE_FORMAT(predmeti.NasDatumPrijemaPredmeti, '%d.%m.%Y') AS NasDatumPrijemaPredmeti