Я автоматизирую электронную таблицу Excel с помощью PHP.
Я искал способ прагматически отформатировать ячейку в процентах в PHPExcel.
Я хочу изменить значение, например
0.077922078
to
8%
Есть ли решение для этого?
Заранее спасибо.
Я автоматизирую электронную таблицу Excel с помощью PHP.
Я искал способ прагматически отформатировать ячейку в процентах в PHPExcel.
Я хочу изменить значение, например
0.077922078
to
8%
Есть ли решение для этого?
Заранее спасибо.
предполагая, что ваша ячейка A1 ..
$objPHPExcel->getActiveSheet()->getStyle('A1')
->getNumberFormat()->applyFromArray(
array(
'code' => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00
)
);
_00
это ключ!!! Я попробовал это, и это работает как шарм! Спасибо @Крис
- person mongotop; 14.01.2014
В библиотеке PHPExcel предопределены только несколько основных констант форматирования. На самом деле вы можете создать свой собственный практически для любых целей (раскрашивание, форматирование десятичных знаков и тысяч и т. д.). Возможности форматирования в Excel огромны. Следующее будет форматировать проценты с 3 десятичными знаками и окрашивать отрицательные значения в красный цвет:
$workSheet
->getStyleByColumnAndRow($column, $row)
->getNumberFormat()
->setFormatCode('0.000%;[Red]-0.000%');
Вы можете попробовать этот код:
$colLetter = "A";
$rowNumber = "1";
$objPHPExcel->getActiveSheet()
->getStyle("$colLetter:$rowNumber")
->getNumberFormat()
->applyFromArray([
"code" => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE
]);
На всякий случай, если кто-то еще увидит это после того, как PHPExcel превратится в PHPSpreadsheet.
В PHPSpreadsheet есть специальная функция для применения кодов формата. Итак, чтобы установить число в процентах, нам нужно заменить applyFromArray()
на setFormatCode()
следующим образом:
$spreadsheet
->getActiveSheet()
->getStyle("A1")
->getNumberFormat()
->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_PERCENTAGE_00);
Примечание. Похоже, что setFormatCode()
не поддерживает применение ко всему столбцу/строке. Итак, если это ваш случай, вам нужно будет создать цикл по столбцу/строке, чтобы применить его к каждой ячейке отдельно.