Perl: электронная таблица :: WriteExcel не работает с PERCENTILE FORMULA IN EXCEL - PullRequest
1 голос
/ 20 апреля 2011

Ниже мой код

использовать электронную таблицу :: WriteExcel;

# Create a new Excel workbook
my $workbook = Spreadsheet::WriteExcel->new('ttif.xls');
 $workbook->compatibility_mode();
# Add a worksheet
$worksheet = $workbook->add_worksheet();

#  Add and define a format
$format = $workbook->add_format(); # Add a format
$format->set_bold();
$format->set_color('blue');
$format->set_align('center');
my $row = 2;
my $count = 1;
my $lat = '28.580022';
my $long = '77.315362';
my $alt_range = 300;
my $ttf_range = 20;
my $gps_time  = 138955387;
$worksheet->write('A1',Latitude);
$worksheet->write('B1',Longitude);
$worksheet->write('C1',Alt);
$worksheet->write('D1',TTFF);
$worksheet->write('E1','GPS Time');
while ($count <= 15725)
{
$worksheet->write("A$row",$lat);
$worksheet->write("B$row",$long);
my $random_number = int(rand($alt_range));
$worksheet->write("C$row",$random_number);
$random_number = int(rand($ttf_range));
$worksheet->write("D$row",$random_number);
$worksheet->write("E$row",$gps_time);
    $worksheet->write("H$row",$count);
$worksheet->write("I$row","=H$row/100");
$count++;
$row++;
}
my $percentile = $worksheet->store_formula('=PERCENTILE(D:D,I1)');
my $row  = 2;
my $count = 1;
while ($count <=100)
{
    $worksheet->repeat_formula("J$row",$percentile,$format,'I1',"I$row");
$count++;
$row++;
}

Когда я открываю файл сгенерировать в Excel, вместо того, чтобы показывать результат в процентах, он показывает #VALUE! ошибка Пожалуйста, помогите

1 Ответ

0 голосов
/ 20 апреля 2011

Формула percentile () (в данном случае) анализируется неправильно, и в результате формулы вы получаете #VALUE.

Это можно исправить, изменив repeat_formula () аргументы следующим образом:

$worksheet->repeat_formula( "J$row", $percentile, $format, 'I1', "I$row",
    '_ref2d' => '_ref2dV' );

Дополнительная пара токенов совпадения / замены в конце помогает анализатору выбрать правильный класс формулы для используемой функции.

В качестве альтернативы, вы можете попробоватьмодуль Excel :: Writer :: XLSX , который использует тот же API, что и Spreadsheet :: WriteExcel , но который не страдает этим типом проблем с формулами и не требуетstore_formula () / repeat_formula () решение проблемы производительности.Прочтите документацию, прежде чем переходить на новый модуль, чтобы убедиться, что он соответствует вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...