Формат учета PHPSpreadsheet

Кто-нибудь знает, как применить эквивалент «Бухгалтерская форма» в PHPSpreadsheet?

введите описание изображения здесь

Я нашел старую публикацию Stackoverflow, в которой упоминалось, как это сделать с его предшественником PHPExcel, но когда я пытаюсь создать свой собственная константа с тем же значением: ("$" * #, ## 0.00); ("$" * (#, ## 0.00); ( "$" * "-" ?? ); (@_) Я не получаю ожидаемого результата.


person Uriel    schedule 23.05.2018    source источник


Ответы (2)


Извините, но ответ был таким же, как и для PHP Excel. Это был способ доступа к константе, который вызвал проблему (FORMAT_ACCOUNTING вместо self :: FORMAT_ACCOUNTING)

Для справки: вам нужно создать свою константу:

const FORMAT_ACCOUNTING = '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)';
person Uriel    schedule 23.05.2018

Чтобы дополнить ответ, нужно сделать только это:

  1. Найдите файл NumberFormat.php на маршруте PHPspreadsheet\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Style\NumberFormat.php.
  2. Откройте файл.
  3. Добавьте этот код в класс const FORMAT_ACCOUNTING = '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)';
  4. Наконец, вам нужно вызвать этот формат в своем отчете, например:

Файл отчета

$spreadsheet->getActiveSheet()->getStyle('J')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_ACCOUNTING);

Или вы можете сделать (простой или короткий способ), не обновляя или изменяя класс файла:

$spreadsheet->getActiveSheet()->getStyle('J')->getNumberFormat()->setFormatCode('_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)');
person jecorrales    schedule 11.09.2018
comment
Никогда не редактируйте содержимое пакетов вашего поставщика. Это очень усложняет задачу, если вы когда-нибудь решите обновить пакет или реализовать Composer. - person Harry; 06.05.2019
comment
Возможно, я пропустил более подробную информацию о том, что вы предлагаете, но это правильное решение. Но я также поставил другой ответ, в котором вам не нужно редактировать пакеты поставщика, но вы указываете формат. Вы правы, привет. - person jecorrales; 06.05.2019