来自自定义单元格的 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-29
到 CELL 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);
我需要从 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-29
到 CELL 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);