SpreadScript Tcl Example
This is a simple Tcl 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
package require spreadscript
if {[llength [array names env SPREADSCRIPT_LICENSE]] != 0} {
set SPREADSCRIPT_LICENSE $env(SPREADSCRIPT_LICENSE)
} else {
set SPREADSCRIPT_LICENSE "/opt/SpreadScript/SpreadScript-license.txt"
}
proc dumpCell {sheet row col} {
global SS_FORMULA_CELL
set type [sheet getType $row $col]
set value [sheet getText $row $col]
set typeString [getTypeString $type]
puts -nonewline [format "%d, %d: %s -- %s" $row $col $value $typeString]
if {$type == $SS_FORMULA_CELL} {
puts [format " <%s>" [sheet getFormula $row $col]]
} else {
puts ""
}
}
proc dumpSheet {sheet} {
puts [format "******* dump sheet: %s ********" [sheet getName]]
Range dims -this [sheet getDimensions]
set firstRow [dims getMinRow]
set lastRow [dims getMaxRow]
set firstCol [dims getMinColumn]
set lastCol [dims getMaxColumn]
set col $firstCol
while {$col <= $lastCol} {
set row $firstRow
while {$row <= $lastRow} {
dumpCell sheet $row $col
incr row
}
incr col
}
rename dims ""
}
init $SPREADSCRIPT_LICENSE
Workbook book
book activate
book open "sample.xls"
Worksheet sheet -this [book getSheet 1]
sheet setFormula 3 2 "=min(a1..a3)"
sheet recalc
sheet setDefaultFormat $SS_FMT_FIXED
sheet setDefaultPlaces 1
dumpSheet sheet
sheet setDefaultFormat $SS_FMT_FLOAT
sheet setDefaultPlaces 3
dumpSheet sheet
set border [Border border $SS_BORDER_THIN $SS_BORDER_MEDIUM \
$SS_BORDER_DASHED $SS_BORDER_DOTTED]
sheet setBorder 2 2 $border
book save "sample_out.xs3" $SS_NEXS_XS3
book save "sample_out.xls" $SS_EXCEL_95
set range [Range range [sheet cget -this] 1 1 3 3]
range exportHTML "sample_out.html"
rename sheet ""
rename book ""
Workbook book
book activate
Worksheet sheet -this [book createSheet "The Sheet"]
set i 5
while {$i < 15} {
sheet setNumber $i 1 [expr 2 * $i]
incr i
}
dumpSheet sheet
rename book ""
puts "Done!"