PHPExcel Loop SetCellValue из пользовательской ячейки

1

Мне нужно зациклиться от Cell V1 до Custom HA1 для DATES. Вот как это сделать вручную:

$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 как я могу это сделать?

  • 1
    Общий вопрос: почему вы храните даты в виде строк, когда вам, вероятно, следует хранить значения MST Serialized DateTime и устанавливать маску форматирования
  • 0
    @MarkBaker, как правильно? Я не очень знаком с PHPExcel и превосходить в целом
Теги:
phpexcel

1 ответ

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 Serialized 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);
  • 0
    Удивительно, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню