首页 文章

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

提问于
浏览
1

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

有没有办法在运行SaveAs函数之前更新各个工作表的名称?我确实看到有 get_name() 选项,但没有任何改变和重新保存 .

任何帮助都会很棒 .

1 回答

  • 1

    如果您使用的是SpreadSheet::WriteExcel,则可以将工作表的名称指定为方法 add_worksheet 的第一个参数 . 这就是doc所说的:

    $worksheet1 = $workbook->add_worksheet();           # Sheet1
    $worksheet2 = $workbook->add_worksheet('Foglio2');  # Foglio2
    $worksheet3 = $workbook->add_worksheet('Data');     # Data
    $worksheet4 = $workbook->add_worksheet();           # Sheet4
    

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

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

    Update :既然你是另一个想法 . 有's no setter method for the name, so let' s深入了解找到解决方法 .

    code of Spreadsheet::ParseExcel::Worksheet向我们展示了如何存储工作簿对象的名称:

    ###############################################################################
    #
    # get_name()
    #
    # Returns the name of the worksheet.
    #
    sub get_name {
    
        my $self = shift;
    
        return $self->{Name};
    }
    

    您可以直接通过工作表对象访问键名 .

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

    Disclaimer: 您永远不应干涉对象的内部值,尤其是如果您无法控制其来源 . 内部结构可能会在将来的版本中发生变化,从而破坏您的代码!

相关问题