phpexcel - Как изменить тип данных для всего столбца excel


Я пытаюсь изменить тип данных для целого столбца (например: мне нужно изменить столбец "M" на общий формат). Его отображение как 2.00 в поле количества, мне нужно изменить весь этот столбец на общий формат, т.Е.. отобразится как "2". Но это не меняет тип данных.

Вот код:

$objPHPExcel->getActiveSheet()
    ->setCellValue(
        $aCells[$eExcelColumn] . $eExcelRow, 
        $sCellData , 
        PHPExcel_Cell_DataType::TYPE_NUMERIC
    );

$objPHPExcel->getActiveSheet()->getStyle('M1:M97')
    ->getNumberFormat()
    ->setFormatCode('0');

Как сделать для всего столбца "M" в общем формате

 9
Author: Mark Baker, 2014-02-28

2 answers

PHPExcel не поддерживает стиль столбцов или строк: вам нужно установить стиль для range ячеек точно так же, как вы делаете с

$objPHPExcel->getActiveSheet()->getStyle('M1:M97')
->getNumberFormat()
->setFormatCode('0');

Если вы хотите форматировать General, а не '0', то вместо этого установите значение General:

$objPHPExcel->getActiveSheet()->getStyle('M1:M97')
    ->getNumberFormat()
    ->setFormatCode('General');

Или

$objPHPExcel->getActiveSheet()->getStyle('M1:M97')
    ->getNumberFormat()
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_GENERAL);
 12
Author: Mark Baker, 2014-02-28 09:27:51

Вы можете сделать такой столбец:

$objPHPExcel->getActiveSheet()->getStyle('M:M')
    ->getNumberFormat()
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_GENERAL);

Полный рабочий пример. Результат в столбце A имеет два 2, столбец B два 2,00

$sheet = $objPHPExcel->getActiveSheet();

$sheet->getStyle('A:A')
        ->getNumberFormat()
        ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_GENERAL);

$sheet->getStyle('B:B')
        ->getNumberFormat()
        ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);

$sheet->setCellValue('A1', 2);
$sheet->setCellValue('A2', 2.0);
$sheet->setCellValue('B1', 2);
$sheet->setCellValue('B2', 2.0);

Еще несколько примеров выбора столбцов и строк, которые я извлек из своей фактической базы:

$objPHPExcel->getActiveSheet()->getStyle('1:1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A:A')->getNumberFormat()->setFormatCode('yyyy/mm');
$objPHPExcel->getActiveSheet()->getStyle('D:D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E:E')->getNumberFormat()->setFormatCode('$#,###');
 5
Author: Klompenrunner, 2017-08-18 22:56:00