2013-02-24 62 views
0

我需要將我的XLS文件與另一個文件進行比較,並相應地修改第一個(某些單元格)文件。 我需要做的是跨平臺的,所以我使用電子表格:: ParseExcel的:: SaveParserperl excel解析並修改相同的工作表

這裏是子程序我到目前爲止

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("[email protected]$!"); 
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");  
    }  

} 
} 

http://search.cpan.org/~jmcnamara/Spreadsheet-ParseExcel/lib/Spreadsheet/ParseExcel/SaveParser.pm

好像例如,BU我得到這個錯誤: 在./test.pl線通過包無法找到對象的方法「AddCell」,「電子表格:: ParseExcel的::工作表」 153

正是這種一行

$ worksheet-> AddCell($ row,1,「Shop」);

我試着甚至添加

use Spreadsheet::ParseExcel::Worksheet; 
use Spreadsheet::ParseExcel::Workbook; 

我新的Perl和我沒能到google的東西有益。

回答

1

我猜你Spreadsheet::ParseExcelSpreadsheet::ParseExcel::SaveParser

問題和了一些代碼是parse()Parse()方法。 不幸的是界面不是很透明。如果你打電話

$parser->parse(...)

你得到一個Spreadsheet::ParseExcel::Workbook對象,但如果你使用

$parser->Parse(...)

你會得到一個use Spreadsheet::ParseExcel::SaveParser::Workbook對象。

這就是你需要的!

這是我的例子:

#!/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("[email protected]$!"); 

    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");  
     }  

    } 
} 
+0

哦謝謝!我沒有注意到這樣的錯誤:( – pugnator 2013-02-25 18:05:43

+0

我只想添加它需要添加$ workbook-> SaveAs($ _ [0]);最後保存更改 – pugnator 2013-02-25 18:54:46