Форматирование ячейки в процентах в PHPExcel

Я автоматизирую электронную таблицу Excel с помощью PHP.

Я искал способ прагматически отформатировать ячейку в процентах в PHPExcel.

Я хочу изменить значение, например

0.077922078

to

8%

Есть ли решение для этого?

Заранее спасибо.


person cwiggo    schedule 07.05.2013    source источник
comment
вы можете использовать ceil() для округления до ближайшего числа, а затем добавить%, прежде чем поместить его в файл excel ur..php.net/manual/en/function.ceil.php   -  person Dinesh    schedule 08.05.2013


Ответы (4)


предполагая, что ваша ячейка A1 ..

$objPHPExcel->getActiveSheet()->getStyle('A1')
    ->getNumberFormat()->applyFromArray( 
        array( 
            'code' => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00
        )
    );
person Community    schedule 07.05.2013
comment
Я предполагаю, что для получения прямого процента, т.е. 2%, мне нужно удалить форму _00 FORMAT_PERCENTAGE_00? - person cwiggo; 08.05.2013
comment
Используйте PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE для отображения в виде целочисленного процента; 0,0% или 0,000% и т. д. для отображения одного или трех знаков после запятой.... или любой строки, которая соответствует допустимой маске числового формата Excel - person Mark Baker; 08.05.2013
comment
снять _00 это ключ!!! Я попробовал это, и это работает как шарм! Спасибо @Крис - person mongotop; 14.01.2014
comment
приятно видеть, что мои вопросы используются :D удачи! спасибо за высокую оценку! - person cwiggo; 14.01.2014

В библиотеке PHPExcel предопределены только несколько основных констант форматирования. На самом деле вы можете создать свой собственный практически для любых целей (раскрашивание, форматирование десятичных знаков и тысяч и т. д.). Возможности форматирования в Excel огромны. Следующее будет форматировать проценты с 3 десятичными знаками и окрашивать отрицательные значения в красный цвет:

$workSheet
    ->getStyleByColumnAndRow($column, $row)
    ->getNumberFormat()
    ->setFormatCode('0.000%;[Red]-0.000%');
person lubosdz    schedule 28.08.2016

Вы можете попробовать этот код:

$colLetter = "A";
$rowNumber = "1";

$objPHPExcel->getActiveSheet()
    ->getStyle("$colLetter:$rowNumber")
    ->getNumberFormat()
    ->applyFromArray([
        "code" => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE
    ]);
person simhumileco    schedule 19.07.2017
comment
Вы должны добавить объяснение того, что ваш ответ добавляет к другому. - person gp_sflover; 19.07.2017
comment
Да, конечно, вы правы, @gp_sflover, но я думал, что этот фрагмент кода описывает сам себя :) - person simhumileco; 19.07.2017

На всякий случай, если кто-то еще увидит это после того, как PHPExcel превратится в PHPSpreadsheet.

В PHPSpreadsheet есть специальная функция для применения кодов формата. Итак, чтобы установить число в процентах, нам нужно заменить applyFromArray() на setFormatCode() следующим образом:

$spreadsheet
   ->getActiveSheet()
   ->getStyle("A1")
   ->getNumberFormat()
   ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_PERCENTAGE_00);

Примечание. Похоже, что setFormatCode() не поддерживает применение ко всему столбцу/строке. Итак, если это ваш случай, вам нужно будет создать цикл по столбцу/строке, чтобы применить его к каждой ячейке отдельно.

person Lucas    schedule 09.07.2021
comment
setFormatCode — это функция в PHPExcel. ApplyFromArray используется для одновременной установки нескольких стилей. Кроме того, вы можете использовать A1: E10 для идентификатора ячейки, чтобы установить формат для нескольких ячеек. - person kainaw; 15.07.2021