gpt4 book ai didi

Perl - Spreadsheet::XLSX 引用工作簿中的特定工作表

转载 作者:行者123 更新时间:2023-12-02 00:21:33 24 4
gpt4 key购买 nike

仍在学习用 Perl 走路(爬行?)。

我有 Perl 代码,基本上我试图循环遍历数组字符串并在我的工作簿中找到这些工作表(目前,我 100% 肯定会有工作簿中提供的名称的工作表)。 $worksheet 变量似乎根据

分配给工作表就好了
print $worksheet->(Name);

测试线。然而,下一行

my $cell = $worksheet->get_cell(1,1);

似乎没有设置单元格,因为以下行不打印单元格值(我知道这是为这种情况设置的)。我知道这一点,因为如果我在

中注释掉“if ($cell)”
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");
}

最佳答案

根据@JackManey 上面的评论,我在 $Worksheet 上使用了 Data::Dumper 并得到了以下结果(部分结果):

$VAR1 = bless( {
'DefColWidth' => '8.43
'MinCol' => 0,
'MaxRow' => 25,
'MinRow' => 0,
'path' => 'worksheets/
'MaxCol' => 0,
'Name' => 'Fund_Data',

'MinCol' => 0, 'MinRow' => 0,提示我我的单元格引用是基于零的。当我变了

my $cell = $worksheet->get_cell(1,1);

my $cell = $worksheet->get_cell(0,0);

我得到了我想要的结果!

不仅我的问题得到了解答,我还学到了一个很棒的内置 PERL 函数!

关于Perl - Spreadsheet::XLSX 引用工作簿中的特定工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com