来自自定义单元格的 PHPExcel 循环 SetCellValue

PHPExcel Loop SetCellValue from a custom cell

我需要从 Cell V1 循环到 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-29CELL HA1 2016-06-04 的日期,我该怎么做?

这不是特别的 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 序列化 Date/Time 日期值,并设置格式掩码以将值显示为日期:

$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);