Таблицу PHPS и запись большого количества десятичных знаков - PullRequest
0 голосов
/ 03 октября 2018

У меня проблемы с PHPSpreadsheet при создании файла XLSX и попытке записать большое количество десятичных разрядов в числовые значения.

PHPSpreadsheet округляет мои 14 десятичных разрядов, ноМне нужно, чтобы они хранились точно так, как представлено.

Я использую setFormatCode('0.00000000000000'), как описано в документации , но это не работает так, как я ожидал.

Вот мойТестовый код:

<?php

require __DIR__ . '/vendor/autoload.php'; // Installed via composer

$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();

$array = [
         0.03790728347833,
      1345.28748532874927,
    121345.18248762894914, // all 14 DP
];

$format = '0.00000000000000'; // 14 DP

// write the data
$spreadsheet->getActiveSheet()
    ->fromArray($array, null, 'A1');

// Format the cells
$spreadsheet->getActiveSheet()->getStyle('A1:C1')->getNumberFormat()->setFormatCode($format);

// Column sizing
foreach(range('A','C') as $columnID)
{
    $spreadsheet->getActiveSheet()->getColumnDimension($columnID)->setAutoSize(true);
}

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save("test.xlsx");

// A1 = 0.03790728347833 - same
// A2 = 1345.28748532870000 - rounded
// A3 = 121345.18248763000000 - rounded

Может ли кто-нибудь предоставить способ хранения такого количества десятичных знаков без округления?

1 Ответ

0 голосов
/ 03 октября 2018

Похоже, что это ограничение Excel, а не таблицы PHPS.

Excel ограничен 15 значащими цифрами согласно Википедии .

...