我查看了文档无法找到目前为止。我正在使用“Excel :: Writer :: XLSX”将文本写入excel。
问题是:如何在单元格上附加任何文本。假设单元格A1已经写了“abc”,我怎么能用任何分隔符说“def”来附加它。最后A1细胞应该有“abc-def”。
目前它已覆盖旧数据并仅显示“def”。
File has say :
Hostname name abc
Random Lines
Hostname name def
Random Data
open my $FH, '<', $filenames or die $!;
while(<$FH>)
{
if($_ =~ /^Hostname+\s+name+\s(.*)/){
my $hostname = $1;
print "\nHostname : $1\n";
$worksheet->write(0, 0, $hostname);
}
}
现在,如果你查看代码..当第一个正则表达式将它在单元格上的写入作为abc时...现在当正则表达式下次匹配时...它删除abc并写入def ..我想要一定要追加它...
提前谢谢。答案 0 :(得分:2)
Excel :: Writer ::在创建临时文件时,XLSX不会公开读取临时文件的功能。您需要将值保存在循环外:
use strict;
use warnings;
my $hostname = '';
my $delimiter = '-';
open my $FH, '<', $filenames or die $!;
while(<$FH>)
{
if($_ =~ /^Hostname+\s+name+\s(.*)/){
$hostname .= $delimiter if ($hostname);
$hostname .= $1;
print "\nHostname : $hostname\n";
}
}
$worksheet->write(0, 0, $hostname);
要破解内部数据结构以获取临时值this就是这样说的:
# Write a shared string or an in-line string based on optimisation level.
if ( $self->{_optimization} == 0 ) {
$index = $self->_get_shared_string_index( $str );
}
else {
$index = $str;
}
$self->{_table}->{$row}->{$col} = [ $type, $index, $xf ];
所以要回读字符串,没有优化:
my $value = $self->{_table}->{$row}->{$col}->[1];