#!/usr/bin/perl -w

=head1	NAME

text2table - flat text conversion to OpenDocument spreadsheet


text2table sourcefile.csv mycalc.ods 32 20


Creates an OpenOffice.org Calc file and populate its first sheet
from a delimited text file. Each line of the source file produces
a row in the target table. In the line, the field separator is ";".

The target file is created. Any existing file with the same name is

The two last arguments are the length (lines) and the width (columns)
of the target table.

The input values are processed as text values.


use OpenOffice::OODoc	1.304;

my ($input_file, $output_file, $lines, $columns) = @ARGV;

die "Usage : txt2table <input file> <output OOo file> <lines> <columns>\n"
	unless ($input_file && $output_file && $lines && $columns);

	# create the OOo spreadsheet
my $doc = ooDocument(file => $output_file, create => 'spreadsheet');

	# select & size the 1st (and only) sheet in the document
my $sheet = $doc->getTable(0, $lines, $columns);
	# rename it as the input file (why not ?)
$doc->renameTable($sheet, $input_file);

	# populate the table
open INPUT, "<", $input_file or die "Input file $input_file unavailable\n";
my $line = undef;
my @rows = $doc->getTableRows($sheet);
for (my $i = 0 ; $i < $lines && ($line = <INPUT>) ; $i++)
	my $row = $rows[$i];
	my @cellvalues = split ';', $line;
	my @cells = $doc->getRowCells($row);
	for (my $j = 0 ; $j < $columns && @cellvalues ; $j++)
		$doc->cellValue($cells[$j], shift @cellvalues);

	# save the result