2017-01-19 4 views
1

Мне нужно установить для всех столбцов формат: FORMAT_NUMBERPHPExcel - формат для столбца

Я могу сделать это для одной ячейки. Но я не могу сделать для всей колонки B.

$objPHPExcel->getActiveSheet()->getStyle('B2')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); 

Как установить всю колонку B? PHPExcel_Style_NumberFormat :: FORMAT_NUMBER

+0

Не работает ли это с 'getStyle ('B')'? Я знаю, что он работает со стилями, такими как цвет и фон. – Chris

+0

no не работает –

+0

Обратите внимание, что если это [этот репо] (https://github.com/PHPOffice/PHPExcel), который вы используете, основная сборка завершается с ошибкой, а сборка разработки не выполняется при ошибках. Я предлагаю вам перейти на [box/spout repo] (https://github.com/box/spout). К сожалению, быстрый просмотр вариантов форматирования для вас и 'FORMAT_NUMBER' не поддерживается. Однако он более стабилен. – Nukeface

ответ

0
foreach (range('B', $objPHPExcel->getActiveSheet()->getHighestDataRow()) as $col) { 
$objPHPExcel->getActiveSheet()->getStyle('B'.$col)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); 
     } 
3

Вы можете установить стиль для отдельной ячейки или для диапазона ячеек; но не для столбца или строки.

Чтобы задать стиль для диапазона, используйте

$objPHPExcel->getActiveSheet() 
    ->getStyle('B2:B1024') 
    ->getNumberFormat() 
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); 

Так просто определить первые и последние строки, которые вы хотите установить стиль для в колонке B, и построить строку диапазона от этого.

$ column = 'B'; $ firstRow = 2; $ lastRow = 1024;

$objPHPExcel->getActiveSheet() 
    ->getStyle($column.$firstRow.':'.$column.$lastRow) 
    ->getNumberFormat() 
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); 
+0

И если я не знаю точное количество строк? –

+0

Затем используйте '$ objPHPExcel-> setActiveSheetIndex (0) -> getHighestRow();' или '$ objPHPExcel-> setActiveSheetIndex (0) -> getHighestDataRow();' или отслеживать количество строк –

Смежные вопросы