write_rich_string 具有动态值 (Perl)
write_rich_string with dynamic values (Perl)
我对 perl 还很陌生,我被安排到一个新的 perl 项目中。作为一名 C 开发人员,我最初遇到了一些小问题,但以某种方式设法修复了以下逻辑所期望的代码。
我正在使用 write_rich_string 以便在同一个单元格中进行不同的格式设置。这是我收到错误的代码片段。
$worksheet->write_rich_string(0,0,$format1,$text1,$format2,$text2,$wrap);
代码运行良好,直到 text1 或 text2 之一变为 null。有什么办法可以处理 write_rich_string()?
中的 null
请注意,我有 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 行中。
在我看来,您可以有一个包含要在电子表格中输入的字符串(文本)的数组。在数组中搜索 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] );
这对你有用吗?
期待您的回复,BR。
我对 perl 还很陌生,我被安排到一个新的 perl 项目中。作为一名 C 开发人员,我最初遇到了一些小问题,但以某种方式设法修复了以下逻辑所期望的代码。
我正在使用 write_rich_string 以便在同一个单元格中进行不同的格式设置。这是我收到错误的代码片段。
$worksheet->write_rich_string(0,0,$format1,$text1,$format2,$text2,$wrap);
代码运行良好,直到 text1 或 text2 之一变为 null。有什么办法可以处理 write_rich_string()?
中的 null请注意,我有 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 行中。
在我看来,您可以有一个包含要在电子表格中输入的字符串(文本)的数组。在数组中搜索 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] );
这对你有用吗?
期待您的回复,BR。