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

来自自定义单元格的PHPExcel循环SetCellValue,php,phpexcel,Php,Phpexcel,我需要从单元格V1循环到单元格HA1自定义日期周期。以下是一种手动方式: $objPHPExcel->getActiveSheet()->SetCellValue('V1', '2015-11-29'); $objPHPExcel->getActiveSheet()->SetCellValue('W1', '2015-11-30'); $objPHPExcel->getActiveSheet()->SetCellValue('X1', '2015-12-01'

我需要从单元格V1循环到单元格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个单元格值。
我需要循环从2015-11-29<代码>单元格V1到2016-06-04<代码>单元格HA1的日期,我该怎么做?

这不是一种特殊的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);

一般问题:当您可能应该存储MS Excel序列化的日期时间值并设置格式时,为什么要将日期存储为字符串mask@MarkBaker正确的方法是什么?一般来说,我对PHPExcel和excel不是很熟悉