write_rich_string с динамическими значениями (Perl)
Я довольно новичок в Perl, и я вовлечен в новый проект Perl. Я, будучи разработчиком C, изначально имел некоторые ошибки, но каким-то образом сумел исправить код, ожидаемый для приведенной ниже логики.
Я использую write_rich_string для того, чтобы сделать различное форматирование в одной и той же ячейке. Вот фрагмент кода, где я получаю сообщение об ошибке.
$worksheet->write_rich_string(0,0,$format1,$text1,$format2,$text2,$wrap);
код работает отлично, пока один из text1 или text2 не станет нулевым. Есть ли способ, которым я могу обработать нуль внутри write_rich_string()?
Обратите внимание, у меня есть 7 текстов с соответствующими форматами для вставки. Я только что показал 2 текста.
Запросите вашу помощь, ребята. Пожалуйста помоги.
Обновление 2: я также попробовал следующий подход, так что я могу объединить формат листа (ячейка шрифта красного цвета) со строкой в переменной и поместить ее внутри функции write_rich_string (). Но это дает приведенное ниже сообщение, а в строке Excel вместо этого появляется сообщение ниже.
if ($mdr_count == 1) { $var.="$lav_cell,$mrd"; }
if ($lwd_count == 1) { $var.="$red_cell,$lwd"; }
print "The value is ${var}";
$worksheet->write_rich_string($row,$pos,$var);
Выход:
**Excel::Writer::XLSX::Format=HASH(0x1427aac)**,Provide Missing Required **DataExcel::Writer::XLSX::Format=HASH(0x1426e7c)**,Loan is late by more than 30 days
Он просто преобразовал формат в строку и вставил его в строку Excel.
1 ответ
На мой взгляд, у вас может быть массив со строкой (текст), который вы хотите ввести в электронную таблицу. Искать в массиве undef
элементы и изменить их на NULL
строки.
Пример рабочего кода на основе кода, который вы нам предоставляете.
#!/usr/bin/perl
use strict;
use warnings;
use Excel::Writer::XLSX;
# Create a new Excel workbook
my $workbook = Excel::Writer::XLSX->new( 'perl.xlsx' );
# Add a worksheet
my $worksheet = $workbook->add_worksheet();
# Add and define a format
my $format1 = $workbook->add_format();
$format1->set_bold();
$format1->set_color( 'red' );
$format1->set_align( 'center' );
# Add and define a format
my $format2 = $workbook->add_format();
$format2->set_bold();
$format2->set_color( 'blue' );
$format2->set_align( 'center' );
# Add and define a format
my $format3 = $workbook->add_format();
$format3->set_bold();
$format3->set_color( 'orange' );
$format3->set_align( 'center' );
# Search array and replace undef element(s)
my @text = ('string1', undef, 'string3');
defined or $_ = "NULL" for @text;
# Or simply empty string
# defined or $_ = "" for @text;
# Or simply white space
# defined or $_ = " " for @text;
# Write some strings with multiple formats.
my ($row, $col) = 0;
$worksheet->write_rich_string( $row, $col,
$format1, $text[0],
$format2, $text[1],
$format3, $text[2] );
Это работает для вас?
Ждем вашего ответа, БР.