SpreadScript Perl Example
This is a simple Perl script using SpreadScript
to change and print the contents of an Excel spreadsheet in order to
demonstrate some of the features available in SpreadScript. The most recent
version of this script is included in the distribution in the
"samples" directory.
NOTE
use strict;
use spreadscript;
my $SPREADSCRIPT_LICENSE = $ENV{'SPREADSCRIPT_LICENSE'} ||
"/opt/SpreadScript/SpreadScript-license.txt";
sub dumpCell
{
my $sheet = shift;
my $row = shift;
my $col = shift;
my $type = $sheet->getType($row, $col);
my $value = $sheet->getText($row, $col);
my $typeString = spreadscript::getTypeString($type);
print $row, ", ", $col, ": ", $value, " -- ", $typeString;
if ($type == $spreadscript::SS_FORMULA_CELL)
{
print " <", $sheet->getFormula($row, $col), ">\n";
}
else
{
print "\n";
}
}
sub dumpSheet
{
my $sheet = shift;
print "******* dump sheet: ", $sheet->getName(), " ********\n";
my $dims = $sheet->getDimensions();
my $firstRow = $dims->getMinRow();
my $lastRow = $dims->getMaxRow();
my $firstCol = $dims->getMinColumn();
my $lastCol = $dims->getMaxColumn();
my $col = $firstCol;
while ($col <= $lastCol)
{
my $row = $firstRow;
while ($row <= $lastRow)
{
dumpCell($sheet, $row, $col);
$row = $row + 1;
}
$col = $col + 1;
}
}
spreadscript::init($SPREADSCRIPT_LICENSE);
my $book = new Workbook();
$book->activate();
$book->open("sample.xls");
my $sheet = $book->getSheet(1);
$sheet->setFormula(3, 2, "=min(a1..a3)");
$sheet->recalc();
$sheet->setDefaultFormat($spreadscript::SS_FMT_FIXED);
$sheet->setDefaultPlaces(1);
dumpSheet($sheet);
$sheet->setDefaultFormat($spreadscript::SS_FMT_FLOAT);
$sheet->setDefaultPlaces(3);
dumpSheet($sheet);
$sheet->setBorder(2, 2,
new Border($spreadscript::SS_BORDER_THIN,
$spreadscript::SS_BORDER_MEDIUM,
$spreadscript::SS_BORDER_DASHED,
$spreadscript::SS_BORDER_DOTTED));
$book->save("sample_out.xs3", $spreadscript::SS_NEXS_XS3);
$book->save("sample_out.xls", $spreadscript::SS_EXCEL_95);
my $r = new Range($sheet, 1, 1, 3, 3);
$r->exportHTML("sample_out.html");
$book = new Workbook();
$book->activate();
$sheet = $book->createSheet("The Sheet");
my $i = 5;
while ($i < 15)
{
$sheet->setNumber($i, 1, 2 * $i);
$i = $i + 1;
}
dumpSheet($sheet);
print "Done!\n"