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