带有动态值的write_rich_string(Perl)

问题描述 投票:0回答:1

我是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:我也尝试了以下方法,以便我可以将Worksheet格式(红色字体单元格)与变量中的字符串连接起来并将其放在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);

Output :

**Excel::Writer::XLSX::Format=HASH(0x1427aac)**,Provide Missing Required **DataExcel::Writer::XLSX::Format=HASH(0x1426e7c)**,Loan is late by more than 30 days

它只是将格式转换为字符串并将其粘贴到excel行中。

bash shell perl unix perl-module
1个回答
0
投票

最重要的是,您可以拥有一个包含要在电子表格中输入的字符串(文本)的数组。在数组中搜索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。

© www.soinside.com 2019 - 2024. All rights reserved.