Spreadsheet::ParseExcel::SaveParser(3pm)

Spreadsheet::ParseExcel::SaveParser3pm

Rewrite an existing excel file.

Usage

Say we start with an Excel file that looks like this:

    -----------------------------------------------------
   |   |      A      |      B      |      C      |
    -----------------------------------------------------
   | 1 | Hello       | ...         | ...         |  ...
   | 2 | World       | ...         | ...         |  ...
   | 3 | *Bold text* | ...         | ...         |  ...
   | 4 | ...         | ...         | ...         |  ...
   | 5 | ...         | ...         | ...         |  ...

Then we process it with the following program:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use Spreadsheet::ParseExcel;
    use Spreadsheet::ParseExcel::SaveParser;
    # Open an existing file with SaveParser
    my $parser   = Spreadsheet::ParseExcel::SaveParser->new();
    my $template = $parser->Parse('template.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');

We should now have an Excel file that looks like this:

    -----------------------------------------------------
   |   |      A      |      B      |      C      |
    -----------------------------------------------------
   | 1 | New string  | Newer       | *Newest*    |  ...
   | 2 | World       | ...         | ...         |  ...
   | 3 | *Bold text* | ...         | ...         |  ...
   | 4 | ...         | ...         | ...         |  ...
   | 5 | ...         | ...         | ...         |  ...

Overview

The "Spreadsheet::ParseExcel::SaveParser" module rewrite an existing Excel file by reading it with "Spreadsheet::ParseExcel" and rewriting it with "Spreadsheet::WriteExcel".

Methods

Parser

new()

    $parse = new Spreadsheet::ParseExcel::SaveParser();

Constructor.

Parse()

    $workbook = $parse->Parse($sFileName);
    $workbook = $parse->Parse($sFileName , $formatter);

Returns a "Workbook" object. If an error occurs, returns undef.

The optional $formatter is a Formatter Class to format the value of cells.

Workbook

The "Parse()" method returns a "Spreadsheet::ParseExcel::SaveParser::Workbook" object.

This is a subclass of the Spreadsheet::ParseExcel::Workbook and has the following methods:

worksheets()

Returns an array of "Worksheet" objects. This was most commonly used to iterate over the worksheets in a workbook:

    for my $worksheet ( $workbook->worksheets() ) {
        ...
    }

worksheet()

The "worksheet()" method returns a single "Worksheet" object using either its name or index:

    $worksheet = $workbook->worksheet('Sheet1');
    $worksheet = $workbook->worksheet(0);

Returns "undef" if the sheet name or index doesn't exist.

AddWorksheet()

    $workbook = $workbook->AddWorksheet($name, %properties);

Create a new Worksheet object of type "Spreadsheet::ParseExcel::Worksheet".

The %properties hash contains the properties of new Worksheet.

AddFont

    $workbook = $workbook->AddFont(%properties);

Create new Font object of type "Spreadsheet::ParseExcel::Font".

The %properties hash contains the properties of new Font.

AddFormat

    $workbook = $workbook->AddFormat(%properties);

The %properties hash contains the properties of new Font.

Worksheet

Spreadsheet::ParseExcel::SaveParser::Worksheet

Worksheet is a subclass of Spreadsheet::ParseExcel::Worksheet. And has these methods :

The "Worksbook::worksheet()" method returns a "Spreadsheet::ParseExcel::SaveParser::Worksheet" object.

This is a subclass of the Spreadsheet::ParseExcel::Worksheet and has the following methods:

AddCell

    $workbook = $worksheet->AddCell($row, $col, $value, $format [$encoding]);

Create new Cell object of type "Spreadsheet::ParseExcel::Cell".

The $format parameter is the format number rather than a full format object.

To specify just same as another cell, you can set it like below:

    $row            = 0;
    $col            = 0;
    $worksheet      = $template->worksheet(0);
    $cell           = $worksheet->get_cell( $row, $col );
    $format_number  = $cell->{FormatNo};
    $worksheet->AddCell($row +1, $coll, 'New data', $format_number);

Todo

Please note that this module is currently (versions 0.50-0.60) undergoing a major restructuring and rewriting.

Known Problems

You can only rewrite the features that Spreadsheet::WriteExcel supports so macros, graphs and some other features in the original Excel file will be lost. Also, formulas aren't rewritten, only the result of a formula is written.

Only last print area will remain. (Others will be removed)

Releases

12 releases since Debian 3.0 (Woody); the text changed 9 times.

  1. 3.0
  2. 3.1
  3. 4.0
  4. 5.0
  5. 6.0
  6. 7
  7. 8–10
  8. 11
  9. 12
  10. 13

Author

Current maintainer 0.60+: Douglas Wilson [email protected]

Maintainer 0.40-0.59: John McNamara [email protected]

Maintainer 0.27-0.33: Gabor Szabo [email protected]

Original author: Kawai Takanori [email protected]

From libspreadsheet-parseexcel-perl 0.6600-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.