仍然學習在Perl中漫步(抓取?)。Perl - Spreadsheet :: XLSX指代工作簿中的特定工作表
我有Perl代碼,我基本上試圖循環訪問數組字符串,並在我的工作簿中找到這些工作表(現在,我100%確定會有工作簿中提供名稱的工作表)。 $工作表變量似乎被分配到工作表就好了基於
print $worksheet->(Name);
測試線。然而,下一行
my $cell = $worksheet->get_cell(1,1);
似乎並沒有被設置的單元格,以下線不打印單元格的值(我知道是設置此情況下)。我知道這是因爲如果我註釋掉 「如果($小區)」 中
my $value = $cell->value() if ($cell);
我得到的錯誤:
Can't call method "value" on an undefined value at script.pl line 14
全部代碼是在這裏:
use strict;
use warnings;
use Spreadsheet::XLSX;
my $excel = Spreadsheet::XLSX -> new ('C:\Scott.xlsm',);
my @sheets = qw(Fund_Data GL_Data);
foreach my $sheet (@sheets) {
my $worksheet = $excel->Worksheet($sheet);
print $worksheet->{Name}, "\n"; #just a test to make it is being set to worksheet
my $cell = $worksheet->get_cell(1,1);
my $value = $cell->value() if ($cell);
print $value, "\n" if ($value);
}
我的結果簡單地說就是:
Fund_Data
GL_Data
當它們應該是
Fund_Data
you '--> (Range("A1").Value in Sheet("Fund_Data"))
GL_Data
me '--> (Range("A1").Value in Sheet("GL_Data"))
此外,我建立上述代碼的基礎是關閉下面的代碼,這是經過嘗試和測試。上面代碼的主要區別在於,我不是循環遍歷每張紙,而是試圖根據數組值來分配我想要的工作表。
use strict;
use warnings;
use Spreadsheet::XLSX;
my $excel = Spreadsheet::XLSX -> new ('P:\VBA\Help\Book3.xlsx',);
foreach my $sheet (@{$excel -> {Worksheet}}) {
printf("Sheet: %s\n", $sheet->{Name});
my $cell = $sheet->get_cell(2,1);
my $value = $cell->value();
printf("Cell value is: $value");
}
做'使用Data :: Dumper;打印Dumper($ cell)。 「\ n」;'剛剛初始化'$ cell'後。什麼打印出來? – 2012-05-23 17:52:50
@JackManey - $ VAR1 = undef; –
@JackManey - >這樣正式告訴我單元沒有設置,但我的問題是爲什麼不呢?以及如何設置它? –