我需要从Cell V1循环到DATE的Cell HA1自定义时段。这是一种手动方式:
$objPHPExcel->getActiveSheet()->SetCellValue('V1', '2015-11-29');
$objPHPExcel->getActiveSheet()->SetCellValue('W1', '2015-11-30');
$objPHPExcel->getActiveSheet()->SetCellValue('X1', '2015-12-01');
$objPHPExcel->getActiveSheet()->SetCellValue('Y1', '2015-12-02');
$objPHPExcel->getActiveSheet()->SetCellValue('Z1', '2015-12-03');
$objPHPExcel->getActiveSheet()->SetCellValue('AA1', '2015-12-04');
但这显然代码太多了。并注意我不能使用任何其他功能,然后使用SetCellValue,因为在那之前还有20个单元格值。
我需要将日期从CELL V1 2015-11-29
循环到CELL HA1 2016-06-04
我该怎么做?
答案 0 :(得分:1)
这不是特别的PHPExcel方法,只是循环的标准PHP方法
您只需要创建从列V
到列HA
的循环,并在每次迭代时递增列地址和日期值
$startColumn = 'V';
$endColumn = 'HA';
$date = new DateTime('2015-11-29');
$interval = new DateInterval('P1D');
$endColumn++;
for($column = $startColumn; $column !== $endColumn; $column++) {
$objPHPExcel->getActiveSheet()
->SetCellValue($column.'1', $date->format('Y-m-d'));
$date->add($interval);
}
但是,您应该使用MS序列化日期/时间值作为日期,并设置格式化掩码以将值显示为日期:
$startColumn = 'V';
$endColumn = 'HA';
$lastColumn = $endColumn;
$date = new DateTime('2015-11-29');
$interval = new DateInterval('P1D');
$endColumn++;
for($column = $startColumn; $column !== $endColumn; $column++) {
$objPHPExcel->getActiveSheet()
->SetCellValue(
$column.'1',
PHPExcel_Shared_Date::PHPToExcel($date)
);
$date->add($interval);
}
$objPHPExcel->getActiveSheet()
->getStyle($startColumn.'1:'.$lastColumn.'1')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);