perl excel解析和修改同一工作表
我需要将我的XLS文件与另一个进行比较,并相应地修改第一个(某些单元格)。 我需要跨平台完成,所以我使用电子表格::ParseExcel::SaveParser 这是我到目前为止的子程序perl excel解析和修改同一工作表,perl,excel,Perl,Excel,我需要将我的XLS文件与另一个进行比较,并相应地修改第一个(某些单元格)。 我需要跨平台完成,所以我使用电子表格::ParseExcel::SaveParser 这是我到目前为止的子程序 sub find_occurrences { my $xlsname = $_[0]; my $pattern = $_[1]; my $parser = Spreadsheet::ParseExcel::SaveParser->new(); my $workbook = $parser-
sub find_occurrences
{
my $xlsname = $_[0];
my $pattern = $_[1];
my $parser = Spreadsheet::ParseExcel::SaveParser->new();
my $workbook = $parser->parse($xlsname);
my $worksheet = $workbook->worksheet(0) || die("$@$!");
my ( $row_min, $row_max ) = $worksheet->row_range();
for my $row ( 0 .. $row_max ) {
$cell = $worksheet->get_cell( $row, 1 );
next if (!$cell);
if($cell->value() =~ m/$pattern/i )
{
print "Order found ",$cell->value(),"\n";
$worksheet->AddCell( $row, 1, "Shop" );
}
}
}
好像是个例子,但我得到了这个错误:
无法通过位于./test.pl第153行的包“电子表格::ParseExcel::工作表”找到对象方法“AddCell”
就是这一行
$worksheet->AddCell($row,1,“Shop”)
我甚至尝试添加
use Spreadsheet::ParseExcel::Worksheet;
use Spreadsheet::ParseExcel::Workbook;
我是perl新手,我无法用谷歌搜索一些有用的东西。我猜你混淆了
电子表格::ParseExcel
和电子表格::ParseExcel::SaveParser
问题在于parse()
,parse()
方法。
不幸的是,接口不是很透明。如果你打电话
$parser->parse(…)
您将获得一个电子表格::解析Excel::工作簿
对象,但如果使用
$parser->Parse(…)
您将获得一个使用电子表格::ParseExcel::SaveParser::工作簿
对象
这就是你需要的
以下是我的例子:
#!/usr/bin/perl
use strict;
use warnings;
use Spreadsheet::ParseExcel::SaveParser;
find_occurrences ('Mappe1.xls', qr/.*/);
sub find_occurrences {
my ($xlsname, $pattern) = @_;
my $parser = Spreadsheet::ParseExcel::SaveParser->new();
my $workbook = $parser->Parse($xlsname);
my $worksheet = $workbook->worksheet(0) || die("$@$!");
print "Workbook is a :". ref($workbook). "\n";
my ( $row_min, $row_max ) = $worksheet->row_range();
for my $row ( 0 .. $row_max ) {
my $cell = $worksheet->get_cell( $row, 1 );
next if (!$cell);
if($cell->value() =~ m/$pattern/i )
{
print "Order found ",$cell->value(),"\n";
$worksheet->AddCell($row, 1, "Shop" );
}
}
}
我只想添加它需要添加的$workbook->SaveAs($u0]);在最后保存更改