Perl 使用Excel时是否可以更改工作表名称?

Perl 使用Excel时是否可以更改工作表名称?,perl,perl-module,Perl,Perl Module,编写了一个Perl脚本,以使用(作为模板)解析现有Excel工作簿,并在从数据库添加更新数据的同时创建新文件 在运行SaveAs函数之前,是否有方法更新各个工作表的名称?我想将它们重命名为客户编号,而不是默认的Sheet1、Sheet2等。我确实阅读了PerlDoc,并确实看到有一个get_name()选项,但没有要更改和重新保存的内容 任何帮助都会很好。如果您正在使用,您可以指定工作表的名称作为方法添加工作表的第一个参数。这是政府所说的: 所以你可能想做的是这样的: while (my $re

编写了一个Perl脚本,以使用(作为模板)解析现有Excel工作簿,并在从数据库添加更新数据的同时创建新文件

在运行SaveAs函数之前,是否有方法更新各个工作表的名称?我想将它们重命名为客户编号,而不是默认的Sheet1、Sheet2等。我确实阅读了PerlDoc,并确实看到有一个
get_name()
选项,但没有要更改和重新保存的内容

任何帮助都会很好。

如果您正在使用,您可以指定工作表的名称作为方法
添加工作表的第一个参数。这是政府所说的:

所以你可能想做的是这样的:

while (my $res = $dbh->fetchrow_hashref) {
  my $worksheet = $workbook->add_worksheet($res->{'customerName'});
  # do stuff with that sheet
}

更新: 因为您只使用电子表格::ParseExcel,所以这里有另一个想法。这个名称没有Stter方法,所以让我们深入研究一下解决方案。

向我们展示了如何存储工作簿对象的名称:

###############################################################################
#
# get_name()
#
# Returns the name of the worksheet.
#
sub get_name {

    my $self = shift;

    return $self->{Name};
}
您可以通过工作表对象直接访问密钥名称

$worksheet->{'Name'} = $res->{'customerName'};
免责声明:您不应干预对象的内部值,尤其是在您无法控制其源的情况下。在未来的版本中,内部结构可能会发生变化,从而破坏您的代码

如果正在使用,可以将工作表的名称指定为方法
添加工作表的第一个参数。这是政府所说的:

所以你可能想做的是这样的:

while (my $res = $dbh->fetchrow_hashref) {
  my $worksheet = $workbook->add_worksheet($res->{'customerName'});
  # do stuff with that sheet
}

更新: 因为您只使用电子表格::ParseExcel,所以这里有另一个想法。这个名称没有Stter方法,所以让我们深入研究一下解决方案。

向我们展示了如何存储工作簿对象的名称:

###############################################################################
#
# get_name()
#
# Returns the name of the worksheet.
#
sub get_name {

    my $self = shift;

    return $self->{Name};
}
您可以通过工作表对象直接访问密钥名称

$worksheet->{'Name'} = $res->{'customerName'};

免责声明:您不应干预对象的内部值,尤其是在您无法控制其源的情况下。在未来的版本中,内部结构可能会发生变化,从而破坏您的代码

您正在谈论使用创建新工作簿吗?不,仅使用现有工作簿中的数据,然后对某些单元格进行更改,并另存为其他文件。在这种情况下,我不会创建任何新的工作表,只是编辑现有的工作表。因为主文件是一个模板,所以我想保存使用的工作表(共有30个),使用的客户编号与每个更新的工作表上的新数据相关。到目前为止,我只使用电子表格::ParseExcel就可以完成所有这些工作。我已经调整了答案。您是说使用创建新工作簿吗?不,只使用现有工作簿中的数据,然后对某些单元格进行更改,并另存为其他文件。在这种情况下,我不会创建任何新的工作表,只是编辑现有的工作表。因为主文件是一个模板,所以我想保存使用的工作表(共有30个),使用的客户编号与每个更新的工作表上的新数据相关。到目前为止,我只使用电子表格::ParseExcel就可以完成所有这些。我已经调整了我的答案。当然,您也可以将自己的setter方法monkeypatch到其中,但这仍然取决于名称的存储位置,而不是更改。当然,您也可以将自己的setter方法monkeypatch到其中,但这仍然取决于名称的存储位置,而不是更改。