附加数据时在Excel SaveParser中出现问题

时间:2016-07-02 06:32:20

标签: regex excel perl file append

我想使用 perl 脚本在 excel文件中创建并附加一些数据。正如许多论坛链接所述,我参考了Spreadsheet::WriteExcel模块链接上提供的示例代码。电子表格已成功创建,没有任何问题。

但是,我使用第二个脚本追加一些数据到现有文件。我使用Spreadsheet::ParseExcel::SaveParser模块并使用this link上提供的示例代码。以下是我的代码与网站上提供的代码完全相同:

#!/usr/bin/perl
  use Spreadsheet::ParseExcel;
  use Spreadsheet::ParseExcel::SaveParser;
  use Spreadsheet::WriteExcel;

  # Open an existing file with SaveParser
  my $parser   = Spreadsheet::ParseExcel::SaveParser->new();
  my $template = $parser->Parse('perl.xls');


  # Get the first worksheet.
  my $worksheet = $template->worksheet(0);
  my $row  = 0;
  my $col  = 0;


  # Overwrite the string in cell A1
  $worksheet->AddCell( $row, $col, 'New string' );


  # Add a new string in cell B1
  $worksheet->AddCell( $row, $col + 1, 'Newer' );


  # Add a new string in cell C1 with the format from cell A3.
  my $cell = $worksheet->get_cell( $row + 2, $col );
  my $format_number = $cell->{FormatNo};

  $worksheet->AddCell( $row, $col + 2, 'Newest', $format_number );


  # Write over the existing file or write a new file.
  $template->SaveAs('newfile.xls');

但是,我收到以下错误:

Unknown method: Spreadsheet::WriteExcel::Format::set_hidden at <path_to_SaveParser.pm> line 72.

因为它从内置模块中抛出错误,所以我一言不发。找不到某些内置函数。我可能要在我的文件中导入该模块(但不知道哪一个!)。我认为SaveAs子例程存在问题。以下是该模块的摘要以供参考:

sub SaveAs($$){
    my ($oBook, $sName)=@_;
    # Create a new Excel workbook
    my $oWrEx = Spreadsheet::WriteExcel->new($sName);
    my %hFmt;

    my $iNo = 0;
    my @aAlH = ('left', 'left', 'center', 'right', 'fill', 'justify', 'merge', 'equal_space');
    my @aAlV = ('top' , 'vcenter', 'bottom', 'vjustify', 'vequal_space');

    foreach my $pFmt (@{$oBook->{Format}}) {
        my $oFmt = $oWrEx->addformat();    # Add Formats
        unless($pFmt->{Style}) {
            $hFmt{$iNo} = $oFmt;
            my $rFont = $pFmt->{Font};

            $oFmt->set_font($rFont->{Name});
            $oFmt->set_size($rFont->{Height});
            $oFmt->set_color($rFont->{Color});
            $oFmt->set_bold($rFont->{Bold});
            $oFmt->set_italic($rFont->{Italic});
            $oFmt->set_underline($rFont->{Underline});
            $oFmt->set_font_strikeout($rFont->{Strikeout});
            $oFmt->set_font_script($rFont->{Super});

            $oFmt->set_hidden($rFont->{Hidden});        #LINE 72 !!!

            $oFmt->set_align($aAlH[$pFmt->{AlignH}]);
            $oFmt->set_align($aAlV[$pFmt->{AlignV}]);
            if($pFmt->{Rotate}==0) {
                $oFmt->set_rotation(0);
            }
            #....

Shebang运算符(#!)路径似乎没有任何问题,因为它与创建excel文件时使用的路径相同。有人可以提供一些关于可能出错的指示吗?

0 个答案:

没有答案