package Excel::Table; # # Excel::Table.pm - spreadsheet table processing class. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published # by the Free Software Foundation; either version 2 of the License, # or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # =head1 NAME Excel::Table =head1 SYNOPSIS use Excel::Table; my $xs = Excel::Table->new('dir' => '/cygdrive/c/Users/self/Desktop'); for ($xs->list_workbooks) { print "workbook [$_]\n"; } $xs->open('mybook.xls'); my $wb1 = $xs->open_re('foo*bar*'); for my $worksheet ($wb1->worksheets) { print "worksheet: " . $worksheet->get_name() . "\n"; } $xs->null("this is a null value"); $xs->force_null(1); $xs->rowid(0); $xs->trim(0); my @data = $xs->extract('Sheet1'); for (@data) { printf "rowid [%s] title [%s] max_width [%d] value [%s]\n", $_->[0], $xs->titles->[0], $xs->widths->[0], $data{$_}->[0]; } @data = $xs->extract_hash('Sheet1'); @data = $xs->select("column1,column2,column3", 'Sheet1'); @data = $xs->select_hash("column1,column2,column3", 'Sheet1'); printf "columns %d rows %d title_row %d\n", $xs->columns, $xs->rows, $xs->title_row; printf "regexp [%s] pathname [%s] sheet_name [%s]\n", $xs->regexp, $xs->pathname, $xs->sheet_name; printf "colid2title(0) = [%s]\n", $xs->colid2title(0); printf "title2colid('Foo') = %d\n", $xs->title2colid('Foo'); =head1 DESCRIPTION Excel::Table.pm - spreadsheet table processing. Retrieves worksheets as if they are structured tables array-format. =over 4 =item 1. OBJ->list_workbooks Returns an array of workbook files in the directory defined by the B property. =item 2a. OBJ->open(EXPR) Parses the pathname specified by EXPR. The B property optionally specified during the open will designate the search path, although EXPR can also be a full pathname. Once opened, via this method (or B) the workbook is available for use by the B method. =item 2b. OBJ->open_re(EXPR) This will search for a file which has a path matching the regexp EXPR. A warning will be issued if multiple matches are found, only the first will be opened. =item 3. OBJ->regexp Returns the regexp used to search for the workbook on the filesystem. =item 4. OBJ->pathname Returns the pathname of the opened workbook. =item 5a. OBJ->extract(EXPR,[TITLE_ROW]) This will extract all data from the worksheet named EXPR. Data is extracted into an array and returned. Format of data is per below: [ value1, value2, value3, ... ], [ value1, value2, value3, ... ], [ value1, value2, value3, ... ], ... The object OBJ will be populated with various properties to assist you to access the data in the array, including column titles and widths. A worksheet object is temporarily created in order to populate the array. Once a worksheet is extracted, the associated worksheet object is destroyed. This routine can be called again on any worksheet in the workbook. If the TITLE_ROW argument is specified, then the B property will also be updated prior to extraction. =item 5b. OBJ->extract_hash(EXPR,[TITLE_ROW]) Per the B method, but returns an array of hashes, with the hash keys corresponding to the titles. =item 5c. OBJ->select(CLAUSE,EXPR,[TITLE_ROW]) Similar to the B method, this will extract all rows from the worksheet EXPR, constraining the columns to those specified by the B argument, which is a comma-separated string, e.g. "column1,column2,column3". As with the B method, the B and B properties will be revised. =item 5d. OBJ->select_hash(CLAUSE,EXPR,[TITLE_ROW]) Per the B