2014-12-22 5 views
2

Я печатаю цифры на листе Excel с помощью модуля Excel :: Writer :: XLSX, но большие целые числа печатаются в научной нотации.Как отключить научную нотацию при работе с Perl и Excel

Можно ли напечатать его как десятичное число? Например, с использованием

$worksheet->write_number(0, 0, 123456); 
$worksheet->write_number('A2', 2.3451); 

Существует определенный предел, благодаря которому большие числа печатаются в научной нотации.

+0

Возможно, 'set_num_format()'? – toolic

ответ

2

Как указывалось на @toolic, вы можете сделать что-то вроде этого:

my $format = $workbook->add_format(); 
$format->set_num_format('#');  
$worksheet->write_number('A1', 1234567890, $format); 

Это будет указать «без знаков после запятой» в качестве формата.

См. How to control and understand settings in the Format Cells dialog box in Excel для ссылки на форматирование.

1

Как уже упоминалось, использование set_num_format может быть одним из способов помочь вам в решении этого вопроса, но ответ выше избавится от любых десятичных чисел - см. here для списка возможных стилей для использования ... НО ТОЛЬКО, если ваши номера имеют пятнадцать или менее значимые цифры. Excel ограничивает число до 15 значащих цифр. https://superuser.com/questions/437764/why-is-excel-truncating-my-16-digit-numbers

К счастью, Excel немного приятнее, когда дело доходит до подсчета персонажей! :) http://excel.tips.net/T003163_Character_Limits_for_Cells.html

Если вам нужны данные только для APPEAR как десятичные числа в листе Excel, тогда у вас есть возможность записать эти ячейки в виде строк - не волнуйтесь, они будут строками, но они будут выглядеть очень ужасно десятичные числа;)

use Spreadsheet::WriteExcel; 
$WORKBOOK = Spreadsheet::WriteExcel->new($PutTheFileHere); 

$FORMAT_STRING = $WORKBOOK->addformat(num_format => '@'); 
$format = $FORMAT_STRING 
$worksheet->write($row_num, $col_num, $field_data, $format); 
Смежные вопросы