::ExcelTop, Main, Index
The Excel
namespace provides commands to control Microsoft Excel.
CommandsTop, Main, Index
AddColumnChartSimple [::Excel]Top, Main, Index
Add a clustered column chart to a worksheet. Simple case.
Parameters
worksheetId | Identifier of the worksheet. |
numRows | Number of rows beeing used for the chart. |
numCols | Number of columns beeing used for the chart. |
title | String used as title of the chart. Optional, default "" . |
Description
Data for the x-axis is taken from column 1, starting at row 2. Names for the lines are taken from row 1, starting at column 2. The data range for the $numCols
plots starts at (2, 2) and goes to ($numRows
+1, $numCols
+1).
Return value
Returns the identifier of the added chart.
See also
CreateChart, AddLineChart, AddLineChartSimple, AddPointChartSimple
proc ::Excel::AddColumnChartSimple {worksheetId numRows numCols {title {}}} { # Add a clustered column chart to a worksheet. Simple case. # # worksheetId - Identifier of the worksheet. # numRows - Number of rows beeing used for the chart. # numCols - Number of columns beeing used for the chart. # title - String used as title of the chart. # # Data for the x-axis is taken from column 1, starting at row 2. # Names for the lines are taken from row 1, starting at column 2. # The data range for the $numCols plots starts at (2, 2) and goes # to ($numRows+1, $numCols+1). # # Returns the identifier of the added chart. # # See also: CreateChart AddLineChart AddLineChartSimple AddPointChartSimple set chartId [Excel CreateChart $worksheetId $::Excel::xlColumnClustered] # Select the range of cells to be used as data. Excel SetChartSourceByIndex $chartId $worksheetId 2 2 [expr {$numRows+1}] [expr {$numCols+1}] set xrangeId [Excel SelectRangeByIndex $worksheetId 2 1 [expr {$numRows+1}] 1] for { set i 1 } { $i <= $numCols } { incr i } { set series [GetChartSeries $chartId $i] set name [Excel GetCellValue $worksheetId 1 [expr {$i +1}]] $series Name $name $series XValues $xrangeId Cawt Destroy $series } Cawt Destroy $xrangeId # Set chart specific properties. # Switch on legend display. $chartId HasLegend True # Set the chart title string. Excel SetChartTitle $chartId $title # Do not fill the chart interior area. Better for printing. $chartId -with { PlotArea Interior } ColorIndex [expr $::Excel::xlColorIndexNone] # Set axis specific properties. set axis [$chartId -with { Axes } Item $::Excel::xlPrimary] # Set the display of major and minor gridlines. $axis HasMajorGridlines False $axis HasMinorGridlines False Cawt Destroy $axis set axis [$chartId -with { Axes } Item $::Excel::xlSecondary] # Set the display of major and minor gridlines. $axis HasMajorGridlines True $axis HasMinorGridlines False Cawt Destroy $axis return $chartId }
AddLineChart [::Excel]Top, Main, Index
Add a line chart to a worksheet. Generic case.
Parameters
worksheetId | Identifier of the worksheet. |
headerRow | Row containing names for the lines. |
xaxisCol | Data for the x-axis is taken from this column. |
startRow | Starting row for data of x-axis. |
numRows | Number of rows used as data of x-axis. |
startCol | Column in header from which names start. |
numCols | Number of columns to use for the chart. |
title | String used as title of the chart. Optional, default "" . |
yaxisName | Name of y-axis. Optional, default Values . |
markerSize | Size of marker. Optional, default 5 . |
Description
The data range for the $numCols
lines starts at ($startRow
, $startCol
) and goes to ($startRow
+$numRows
-1, $startCol
+$numCols
-1).
$markerSize
must be between 2 and 72.
Return value
Returns the identifier of the added chart.
See also
CreateChart, AddLineChartSimple, AddPointChartSimple, AddRadarChartSimple
proc ::Excel::AddLineChart {worksheetId headerRow xaxisCol startRow numRows startCol numCols {title {}} {yaxisName Values} {markerSize 5}} { # Add a line chart to a worksheet. Generic case. # # worksheetId - Identifier of the worksheet. # headerRow - Row containing names for the lines. # xaxisCol - Data for the x-axis is taken from this column. # startRow - Starting row for data of x-axis. # numRows - Number of rows used as data of x-axis. # startCol - Column in header from which names start. # numCols - Number of columns to use for the chart. # title - String used as title of the chart. # yaxisName - Name of y-axis. # markerSize - Size of marker. # # The data range for the $numCols lines starts at ($startRow, $startCol) # and goes to ($startRow+$numRows-1, $startCol+$numCols-1). # # $markerSize must be between 2 and 72. # # Returns the identifier of the added chart. # # See also: CreateChart AddLineChartSimple AddPointChartSimple AddRadarChartSimple if { $markerSize < 2 || $markerSize > 72 } { error "AddLineChart: Valid marker size is between 2 and 72." } set chartId [Excel CreateChart $worksheetId $::Excel::xlLineMarkers] # Select the range of data. Excel SetChartSourceByIndex $chartId $worksheetId $startRow $startCol [expr {$startRow+$numRows-1}] [expr {$startCol+$numCols-1}] # Select the column containing the data for the x-axis. set xrangeId [Excel SelectRangeByIndex $worksheetId $startRow $xaxisCol [expr {$startRow+$numRows-1}] $xaxisCol] # Set the x-axis, name and marker size for each line. for { set i 1 } { $i <= $numCols } { incr i } { set series [GetChartSeries $chartId $i] set name [Excel GetCellValue $worksheetId $headerRow [expr {$startCol+$i-1}]] $series Name $name $series XValues $xrangeId $series MarkerSize $markerSize Cawt Destroy $series } Cawt Destroy $xrangeId # Set the names for the x-axis and the y-axis. set axis [$chartId -with { Axes } Item $::Excel::xlPrimary] $axis HasTitle True $axis -with { AxisTitle Characters } Text [Excel GetCellValue $worksheetId $headerRow $xaxisCol] Cawt Destroy $axis set axis [$chartId -with { Axes } Item $::Excel::xlSecondary] $axis HasTitle True $axis -with { AxisTitle Characters } Text $yaxisName Cawt Destroy $axis # Set the chart title. Excel SetChartTitle $chartId $title # Do not fill the chart interior area. Better for printing. $chartId -with { PlotArea Interior } ColorIndex [expr $::Excel::xlColorIndexNone] return $chartId }
AddLineChartSimple [::Excel]Top, Main, Index
Add a line chart to a worksheet. Simple case.
Parameters
worksheetId | Identifier of the worksheet. |
numRows | Number of rows used as data of x-axis. |
numCols | Number of columns used as data of y-axis. |
title | String used as title of the chart. Optional, default "" . |
yaxisName | Name of y-axis. Optional, default Values . |
markerSize | Size of marker. Optional, default 5 . |
Description
Data for the x-axis is taken from column 1, starting at row 2. Names for the lines are taken from row 1, starting at column 2. The data range for the $numCols
lines starts at (2, 2) and goes to ($numRows
+1, $numCols
+1).
Return value
Returns the identifier of the added chart.
See also
CreateChart, AddLineChart, AddPointChartSimple, AddRadarChartSimple
proc ::Excel::AddLineChartSimple {worksheetId numRows numCols {title {}} {yaxisName Values} {markerSize 5}} { # Add a line chart to a worksheet. Simple case. # # worksheetId - Identifier of the worksheet. # numRows - Number of rows used as data of x-axis. # numCols - Number of columns used as data of y-axis. # title - String used as title of the chart. # yaxisName - Name of y-axis. # markerSize - Size of marker. # # Data for the x-axis is taken from column 1, starting at row 2. # Names for the lines are taken from row 1, starting at column 2. # The data range for the $numCols lines starts at (2, 2) # and goes to ($numRows+1, $numCols+1). # # Returns the identifier of the added chart. # # See also: CreateChart AddLineChart AddPointChartSimple AddRadarChartSimple return [Excel AddLineChart $worksheetId 1 1 2 $numRows 2 $numCols $title $yaxisName $markerSize] }
AddPointChartSimple [::Excel]Top, Main, Index
Add a point chart to a worksheet. Simple case.
Parameters
worksheetId | Identifier of the worksheet. |
numRows | Number of rows beeing used for the chart. |
col1 | Start column of the chart data. |
col2 | End column of the chart data. |
title | String used as title of the chart. Optional, default "" . |
markerSize | Size of the point marker. Optional, default 5 . |
Description
Data for the x-axis is taken from column $col1
, starting at row 2. Data for the y-axis is taken from column $col2
, starting at row 2. Names for the axes are taken from row 1, columns $col1
and $col2
.
Return value
Returns the identifier of the added chart.
See also
CreateChart, AddLineChart, AddLineChartSimple, AddRadarChartSimple
proc ::Excel::AddPointChartSimple {worksheetId numRows col1 col2 {title {}} {markerSize 5}} { # Add a point chart to a worksheet. Simple case. # # worksheetId - Identifier of the worksheet. # numRows - Number of rows beeing used for the chart. # col1 - Start column of the chart data. # col2 - End column of the chart data. # title - String used as title of the chart. # markerSize - Size of the point marker. # # Data for the x-axis is taken from column $col1, starting at row 2. # Data for the y-axis is taken from column $col2, starting at row 2. # Names for the axes are taken from row 1, columns $col1 and $col2. # # Returns the identifier of the added chart. # # See also: CreateChart AddLineChart AddLineChartSimple AddRadarChartSimple set chartId [Excel CreateChart $worksheetId $::Excel::xlXYScatter] # Select the range of cells to be used as data. # Data of col1 is the X axis. Data of col2 is the Y axis. Excel SetChartSourceByIndex $chartId $worksheetId 2 $col2 [expr {$numRows+1}] $col2 set series [GetChartSeries $chartId 1] set xrangeId [Excel SelectRangeByIndex $worksheetId 2 $col1 [expr {$numRows+1}] $col1] $series XValues $xrangeId $series MarkerSize $markerSize Cawt Destroy $xrangeId Cawt Destroy $series # Set chart specific properties. # Switch of legend display. $chartId HasLegend False # Set the chart title string. Excel SetChartTitle $chartId $title # Do not fill the chart interior area. Better for printing. $chartId -with { PlotArea Interior } ColorIndex [expr $::Excel::xlColorIndexNone] # Set axis specific properties. # Set the X axis description to cell col1 in row 1. set axis [$chartId -with { Axes } Item $::Excel::xlPrimary] $axis HasTitle True $axis -with { AxisTitle Characters } Text [Excel GetCellValue $worksheetId 1 $col1] # Set the display of major and minor gridlines. $axis HasMajorGridlines True $axis HasMinorGridlines False Cawt Destroy $axis # Set the Y axis description to cell col2 in row 1. set axis [$chartId -with { Axes } Item $::Excel::xlSecondary] $axis HasTitle True $axis -with { AxisTitle Characters } Text [Excel GetCellValue $worksheetId 1 $col2] # Set the display of major and minor gridlines. $axis HasMajorGridlines True $axis HasMinorGridlines False Cawt Destroy $axis return $chartId }
AddRadarChartSimple [::Excel]Top, Main, Index
Add a radar chart to a worksheet. Simple case.
Parameters
worksheetId | Identifier of the worksheet. |
numRows | Number of rows beeing used for the chart. |
numCols | Number of columns beeing used for the chart. |
title | String used as title of the chart. Optional, default "" . |
Description
Data for the x-axis is taken from column 1, starting at row 2. Names for the lines are taken from row 1, starting at column 2. The data range for the $numCols
plots starts at (2, 2) and goes to ($numRows
+1, $numCols
+1).
Return value
Returns the identifier of the added chart.
See also
CreateChart, AddLineChart, AddLineChartSimple, AddPointChartSimple
proc ::Excel::AddRadarChartSimple {worksheetId numRows numCols {title {}}} { # Add a radar chart to a worksheet. Simple case. # # worksheetId - Identifier of the worksheet. # numRows - Number of rows beeing used for the chart. # numCols - Number of columns beeing used for the chart. # title - String used as title of the chart. # # Data for the x-axis is taken from column 1, starting at row 2. # Names for the lines are taken from row 1, starting at column 2. # The data range for the $numCols plots starts at (2, 2) and goes # to ($numRows+1, $numCols+1). # # Returns the identifier of the added chart. # # See also: CreateChart AddLineChart AddLineChartSimple AddPointChartSimple set chartId [Excel CreateChart $worksheetId $::Excel::xlRadarFilled] # Select the range of cells to be used as data. Excel SetChartSourceByIndex $chartId $worksheetId 2 2 [expr {$numRows+1}] [expr {$numCols+1}] set xrangeId [SelectRangeByIndex $worksheetId 2 1 [expr {$numRows+1}] 1] for { set i 1 } { $i <= $numCols } { incr i } { set series [GetChartSeries $chartId $i] set name [GetCellValue $worksheetId 1 [expr {$i +1}]] $series Name $name $series XValues $xrangeId Cawt Destroy $series } Cawt Destroy $xrangeId # Set chart specific properties. # Switch on legend display. $chartId HasLegend True # Set the chart title string. Excel SetChartTitle $chartId $title # Do not fill the chart interior area. Better for printing. $chartId -with { PlotArea Interior } ColorIndex [expr $::Excel::xlColorIndexNone] # Set axis specific properties. set axis [$chartId -with { Axes } Item $::Excel::xlPrimary] # Set the display of major and minor gridlines. $axis HasMajorGridlines False $axis HasMinorGridlines False Cawt Destroy $axis set axis [$chartId -with { Axes } Item $::Excel::xlSecondary] # Set the display of major and minor gridlines. $axis HasMajorGridlines True $axis HasMinorGridlines False Cawt Destroy $axis return $chartId }
AddSeriesTrendLine [::Excel]Top, Main, Index
Add a trend line to a series.
Parameters
seriesId | Identifier of the series. |
args | Options described below. |
-equation <bool> | Set to true, if the equation for the trendline should be displayed on the chart (in the same data label as the R-squared value). |
-linecolor <color> | Set the line color. |
-linewidth <size> | Set the line width. |
-order <int> | Set the order ( > 1) of a polynomal trend line. Only valid, if type is xlPolynomal . |
-rsquared <bool> | Set to true, if the R-squared for the trendline should be displayed on the chart (in the same data label as the equation value). |
-type <XlTrendlineType> | Set the trend line type. Typical values: xlLinear , xlPolynomial . |
Description
- Size values may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
- Color values may be specified in a format acceptable by procedure ::Cawt::GetColor, i.e. color name, hexadecimal string, Office color number.
Return value
Returns the identifier of the trend line.
See also
GetChartNumSeries, GetChartSeries, SetSeriesAttributes
proc ::Excel::AddSeriesTrendLine {seriesId args} { # Add a trend line to a series. # # seriesId - Identifier of the series. # args - Options described below. # # -equation <bool> - Set to true, if the equation for the trendline should be displayed # on the chart (in the same data label as the R-squared value). # -rsquared <bool> - Set to true, if the R-squared for the trendline should be displayed # on the chart (in the same data label as the equation value). # -type <XlTrendlineType> - Set the trend line type. Typical values: `xlLinear`, `xlPolynomial`. # -order <int> - Set the order ( > 1) of a polynomal trend line. # Only valid, if type is `xlPolynomal`. # -linewidth <size> - Set the line width. # -linecolor <color> - Set the line color. # # * Size values may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # * Color values may be specified in a format acceptable by procedure [::Cawt::GetColor], # i.e. color name, hexadecimal string, Office color number. # # Returns the identifier of the trend line. # # See also: GetChartNumSeries GetChartSeries SetSeriesAttributes set trendId [$seriesId -with { Trendlines } Add] foreach { key value } $args { if { $value eq "" } { error "AddSeriesTrendLine: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-equation" { $trendId DisplayEquation [Cawt TclBool $value] } "-rsquared" { $trendId DisplayRSquared [Cawt TclBool $value] } "-type" { $trendId Type [Excel GetEnum $value] } "-order" { $trendId Order [expr int($value)] } "-linewidth" { $trendId -with { Format Line } Weight [Cawt ValueToPoints $value] } "-linecolor" { $trendId -with { Format Line ForeColor } RGB [Cawt GetColor $value] } default { error "AddSeriesTrendLine: Unknown key \"$key\" specified" } } } return $trendId }
AddWorkbook [::Excel]Top, Main, Index
Add a new workbook with one worksheet.
Parameters
appId | Identifier of the Excel instance. |
type | Value of enumeration type Enum::XlWBATemplate. Possible values: xlWBATChart , xlWBATExcel4IntlMacroSheet , xlWBATExcel4MacroSheet , xlWBATWorksheet . Optional, default xlWBATWorksheet . |
Return value
Returns the identifier of the new workbook.
See also
proc ::Excel::AddWorkbook {appId {type xlWBATWorksheet}} { # Add a new workbook with one worksheet. # # appId - Identifier of the Excel instance. # type - Value of enumeration type [Enum::XlWBATemplate]. # Possible values: `xlWBATChart`, `xlWBATExcel4IntlMacroSheet`, # `xlWBATExcel4MacroSheet`, `xlWBATWorksheet`. # # Returns the identifier of the new workbook. # # See also: OpenWorkbook Close SaveAs return [$appId -with { Workbooks } Add [Excel GetEnum $type]] }
AddWorksheet [::Excel]Top, Main, Index
Add a new worksheet to the end of a workbook.
Parameters
workbookId | Identifier of the workbook containing the new worksheet. |
name | Name of the new worksheet. |
args | Options described below. |
-mapproc <proc> | Procedure for mapping worksheet names to Excel constraints. Default: MapWorksheetName See MapWorksheetName for mapping details. |
-visible <enum> | Value of enumeration type Enum::XlSheetVisibility. Possible values: xlSheetVisible , xlSheetHidden , xlSheetVeryHidden . Default: xlSheetVisible . |
Return value
Returns the identifier of the new worksheet.
See also
GetNumWorksheets, DeleteWorksheet, SetWorksheetName, MapWorksheetName
proc ::Excel::AddWorksheet {workbookId name args} { # Add a new worksheet to the end of a workbook. # # workbookId - Identifier of the workbook containing the new worksheet. # name - Name of the new worksheet. # args - Options described below. # # -visible <enum> - Value of enumeration type [Enum::XlSheetVisibility]. # Possible values: `xlSheetVisible`, `xlSheetHidden`, `xlSheetVeryHidden`. # Default: `xlSheetVisible`. # -mapproc <proc> - Procedure for mapping worksheet names to Excel constraints. # Default: [MapWorksheetName] # See [MapWorksheetName] for mapping details. # # Returns the identifier of the new worksheet. # # See also: GetNumWorksheets DeleteWorksheet # SetWorksheetName MapWorksheetName set opts [dict create -visible xlSheetVisible -mapproc Excel::MapWorksheetName ] if { [llength $args] == 1 } { # Old mode with optional parameter visibleType dict set opts -visible [lindex $args 0] } else { foreach { key value } $args { if { [dict exists $opts $key] } { if { $value eq "" } { error "AddWorksheet: No value specified for key \"$key\"." } dict set opts $key $value } else { error "AddWorksheet: Unknown option \"$key\" specified." } } } set worksheets [$workbookId Worksheets] set lastWorksheetId [$worksheets Item [$worksheets Count]] set worksheetId [$worksheets -callnamedargs Add After $lastWorksheetId] Excel SetWorksheetName $worksheetId $name -mapproc [dict get $opts "-mapproc"] $worksheetId Visible [Excel GetEnum [dict get $opts "-visible"]] Cawt Destroy $lastWorksheetId Cawt Destroy $worksheets return $worksheetId }
ArrangeWindows [::Excel]Top, Main, Index
Arrange the windows of an Excel application.
Parameters
appId | Identifier of the Excel instance. |
arrangeStyle | Value of enumeration type Enum::XlArrangeStyle. Typical values are: xlArrangeStyleHorizontal , xlArrangeStyleTiled , xlArrangeStyleVertical . Optional, default xlArrangeStyleVertical . |
Return value
Returns no value.
See also
proc ::Excel::ArrangeWindows {appId {arrangeStyle xlArrangeStyleVertical}} { # Arrange the windows of an Excel application. # # appId - Identifier of the Excel instance. # arrangeStyle - Value of enumeration type [Enum::XlArrangeStyle]. # Typical values are: `xlArrangeStyleHorizontal`, # `xlArrangeStyleTiled`, `xlArrangeStyleVertical`. # # Returns no value. # # See also: Open Visible SetWindowState $appId -with { Windows } Arrange [Excel GetEnum $arrangeStyle] }
ChartObjToClipboard [::Excel]Top, Main, Index
Copy a chart object to the clipboard.
Parameters
chartObjId | Identifier of the chart object. |
Description
The chart object is stored in the clipboard as a Windows bitmap file (CF_DIB
).
Return value
Returns no value.
See also
SaveChartObjAsImage, CreateChart
proc ::Excel::ChartObjToClipboard {chartObjId} { # Copy a chart object to the clipboard. # # chartObjId - Identifier of the chart object. # # The chart object is stored in the clipboard as a Windows bitmap file (`CF_DIB`). # # Returns no value. # # See also: SaveChartObjAsImage CreateChart variable excelVersion # CopyPicture does not work with Excel 2007. It only copies # Metafiles into the clipboard. if { $excelVersion >= 12.0 } { set chartArea [$chartObjId ChartArea] $chartArea Copy Cawt Destroy $chartArea } else { $chartObjId CopyPicture $::Excel::xlScreen $::Excel::xlBitmap $::Excel::xlScreen } }
ChartToClipboard [::Excel]Top, Main, Index
Obsolete: Replaced with ChartObjToClipboard in version 1.0.1
Parameters
chartId | Not documented. |
proc ::Excel::ChartToClipboard {chartId} { # Obsolete: Replaced with [ChartObjToClipboard] in version 1.0.1 Excel ChartObjToClipboard $chartId }
ClipboardToMatrix [::Excel]Top, Main, Index
Return the matrix values contained in the clipboard.
Parameters
sepChar | The separation character of the clipboard matrix data. Optional, default ; . |
Description
The clipboard data must be in CSV
format with $sepChar
as separation character. See SetMatrixValues for the description of a matrix representation.
Return value
Returns the matrix values contained in the clipboard.
See also
ClipboardToWorksheet, MatrixToClipboard
proc ::Excel::ClipboardToMatrix {{sepChar {;}}} { # Return the matrix values contained in the clipboard. # # sepChar - The separation character of the clipboard matrix data. # # The clipboard data must be in `CSV` format with $sepChar as separation character. # See [SetMatrixValues] for the description of a matrix representation. # # Returns the matrix values contained in the clipboard. # # See also: ClipboardToWorksheet MatrixToClipboard set csvFmt [twapi::register_clipboard_format "Csv"] while { ! [twapi::clipboard_format_available $csvFmt] } { after 10 } twapi::open_clipboard set clipboardData [twapi::read_clipboard $csvFmt] twapi::close_clipboard Excel SetCsvSeparatorChar $sepChar set matrixList [Excel CsvStringToMatrix $clipboardData] return $matrixList }
ClipboardToWorksheet [::Excel]Top, Main, Index
Insert the matrix values contained in the clipboard into a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
startRow | Row number. Row numbering starts with 1. Optional, default 1 . |
startCol | Column number. Column numbering starts with 1. Optional, default 1 . |
sepChar | The separation character of the clipboard matrix data. Optional, default ; . |
Description
The insertion of the matrix data starts at cell "$startRow
,$startCol
". The clipboard data must be in CSV
format with $sepChar
as separation character. See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
ClipboardToMatrix, WorksheetToClipboard
proc ::Excel::ClipboardToWorksheet {worksheetId {startRow 1} {startCol 1} {sepChar {;}}} { # Insert the matrix values contained in the clipboard into a worksheet. # # worksheetId - Identifier of the worksheet. # startRow - Row number. Row numbering starts with 1. # startCol - Column number. Column numbering starts with 1. # sepChar - The separation character of the clipboard matrix data. # # The insertion of the matrix data starts at cell "$startRow,$startCol". # The clipboard data must be in `CSV` format with $sepChar as separation character. # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: ClipboardToMatrix WorksheetToClipboard set matrixList [Excel ClipboardToMatrix $sepChar] Excel SetMatrixValues $worksheetId $matrixList $startRow $startCol }
Close [::Excel]Top, Main, Index
Close a workbook without saving changes.
Parameters
workbookId | Identifier of the workbook. |
Description
Use the SaveAs method before closing, if you want to save changes.
Return value
Returns no value.
See also
proc ::Excel::Close {workbookId} { # Close a workbook without saving changes. # # workbookId - Identifier of the workbook. # # Use the [SaveAs] method before closing, if you want to save changes. # # Returns no value. # # See also: SaveAs OpenWorkbook $workbookId Close [Cawt TclBool false] }
ColumnCharToInt [::Excel]Top, Main, Index
Return an Excel column string as a column number.
Parameters
colChar | Column string. |
Description
Example:
[Excel ColumnCharToInt A] returns 1. [Excel ColumnCharToInt Z] returns 26.
Return value
Returns the corresponding column number.
See also
GetColumnNumber, ColumnIntToChar
proc ::Excel::ColumnCharToInt {colChar} { # Return an Excel column string as a column number. # # colChar - Column string. # # Example: # [Excel ColumnCharToInt A] returns 1. # [Excel ColumnCharToInt Z] returns 26. # # Returns the corresponding column number. # # See also: GetColumnNumber ColumnIntToChar set abc {- A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} set int 0 foreach char [split $colChar ""] { set int [expr {$int*26 + [lsearch $abc $char]}] } return $int }
ColumnIntToChar [::Excel]Top, Main, Index
Return a column number as an Excel column string.
Parameters
col | Column number. |
Description
Example:
[Excel ColumnIntToChar 1] returns "A". [Excel ColumnIntToChar 26] returns "Z".
Return value
Returns the corresponding column string.
See also
proc ::Excel::ColumnIntToChar {col} { # Return a column number as an Excel column string. # # col - Column number. # # Example: # [Excel ColumnIntToChar 1] returns "A". # [Excel ColumnIntToChar 26] returns "Z". # # Returns the corresponding column string. # # See also: ColumnCharToInt if { $col <= 0 } { error "Column number $col is invalid." } set dividend $col set columnName "" while { $dividend > 0 } { set modulo [expr { ($dividend - 1) % 26 } ] set columnName [format "%c${columnName}" [expr { 65 + $modulo} ] ] set dividend [expr { ($dividend - $modulo) / 26 } ] } return $columnName }
CopyColumn [::Excel]Top, Main, Index
Copy the contents of a column into another column.
Parameters
fromWorksheetId | Identifier of the source worksheet. |
fromCol | Source column number. Column numbering starts with 1. |
toWorksheetId | Identifier of the destination worksheet. |
toCol | Destination column number. Column numbering starts with 1. |
fromRow | Start row of source column. Optional, default 1 . |
toRow | Start row of destination column. Optional, default 1 . |
pasteType | Value of enumeration type Enum::XlPasteType. Typical values are: xlPasteAll , xlPasteAllExceptBorders , xlPasteValues . Optional, default xlPasteAll . |
Description
Note, that the contents of the destination column are overwritten.
Return value
Returns no value.
See also
proc ::Excel::CopyColumn {fromWorksheetId fromCol toWorksheetId toCol {fromRow 1} {toRow 1} {pasteType xlPasteAll}} { # Copy the contents of a column into another column. # # fromWorksheetId - Identifier of the source worksheet. # fromCol - Source column number. Column numbering starts with 1. # toWorksheetId - Identifier of the destination worksheet. # toCol - Destination column number. Column numbering starts with 1. # fromRow - Start row of source column. # toRow - Start row of destination column. # pasteType - Value of enumeration type [Enum::XlPasteType]. # Typical values are: `xlPasteAll`, `xlPasteAllExceptBorders`, `xlPasteValues`. # # Note, that the contents of the destination column are overwritten. # # Returns no value. # # See also: CopyRange CopyWorksheet set numRows [Excel GetNumUsedRows $fromWorksheetId] set fromRangeId [Excel SelectRangeByIndex $fromWorksheetId $fromRow $fromCol [expr {$numRows + $fromRow -1}] $fromCol] set toRangeId [Excel SelectRangeByIndex $toWorksheetId $toRow $toCol [expr {$numRows + $toRow -1}] $toCol] Excel CopyRange $fromRangeId $toRangeId Cawt Destroy $fromRangeId Cawt Destroy $toRangeId }
CopyRange [::Excel]Top, Main, Index
Copy the contents of a cell range into another cell range.
Parameters
fromRangeId | Identifier of the source range. |
toRangeId | Identifier of the destination range. |
pasteType | Value of enumeration type Enum::XlPasteType. Typical values are: xlPasteAll , xlPasteAllExceptBorders , xlPasteValues . Optional, default xlPasteAll . |
Description
Note, that the contents of the destination range are overwritten.
Return value
Returns no value.
See also
SelectAll, CopyWorksheet, CopyColumn
proc ::Excel::CopyRange {fromRangeId toRangeId {pasteType xlPasteAll}} { # Copy the contents of a cell range into another cell range. # # fromRangeId - Identifier of the source range. # toRangeId - Identifier of the destination range. # pasteType - Value of enumeration type [Enum::XlPasteType]. # Typical values are: `xlPasteAll`, `xlPasteAllExceptBorders`, `xlPasteValues`. # # Note, that the contents of the destination range are overwritten. # # Returns no value. # # See also: SelectAll CopyWorksheet CopyColumn $fromRangeId Copy $toRangeId PasteSpecial [Excel GetEnum $pasteType] }
CopyWorksheet [::Excel]Top, Main, Index
Copy the contents of a worksheet into another worksheet.
Parameters
fromWorksheetId | Identifier of the source worksheet. |
toWorksheetId | Identifier of the destination worksheet. |
Description
Note, that the contents of worksheet $toWorksheetId
are overwritten.
Return value
Returns no value.
See also
SelectAll, CopyWorksheetBefore, CopyWorksheetAfter, AddWorksheet
proc ::Excel::CopyWorksheet {fromWorksheetId toWorksheetId} { # Copy the contents of a worksheet into another worksheet. # # fromWorksheetId - Identifier of the source worksheet. # toWorksheetId - Identifier of the destination worksheet. # # Note, that the contents of worksheet $toWorksheetId are overwritten. # # Returns no value. # # See also: SelectAll CopyWorksheetBefore CopyWorksheetAfter AddWorksheet $fromWorksheetId Activate set rangeId [Excel SelectAll $fromWorksheetId] $rangeId Copy $toWorksheetId Activate $toWorksheetId Paste Cawt Destroy $rangeId }
CopyWorksheetAfter [::Excel]Top, Main, Index
Copy the contents of a worksheet after another worksheet.
Parameters
fromWorksheetId | Identifier of the source worksheet. |
afterWorksheetId | Identifier of the destination worksheet. |
worksheetName | Name of the new worksheet. If no name is specified, or an empty string, the naming is done by Excel. Optional, default "" . |
Description
Instead of using the identifier of $afterWorksheetId
, it is also possible to use the numeric index or the special word end
for specifying the last worksheet.
Note, that a new worksheet is generated after worksheet $afterWorksheetId
, while CopyWorksheet overwrites the contents of an existing worksheet. The new worksheet is set as the active sheet.
Return value
Returns the identifier of the new worksheet.
See also
SelectAll, CopyWorksheet, CopyWorksheetBefore, AddWorksheet
proc ::Excel::CopyWorksheetAfter {fromWorksheetId afterWorksheetId {worksheetName {}}} { # Copy the contents of a worksheet after another worksheet. # # fromWorksheetId - Identifier of the source worksheet. # afterWorksheetId - Identifier of the destination worksheet. # worksheetName - Name of the new worksheet. If no name is specified, # or an empty string, the naming is done by Excel. # # Instead of using the identifier of $afterWorksheetId, it is also possible # to use the numeric index or the special word `end` for specifying the # last worksheet. # # Note, that a new worksheet is generated after worksheet $afterWorksheetId, # while [CopyWorksheet] overwrites the contents of an existing worksheet. # The new worksheet is set as the active sheet. # # Returns the identifier of the new worksheet. # # See also: SelectAll CopyWorksheet CopyWorksheetBefore AddWorksheet set fromWorkbookId [$fromWorksheetId Parent] set afterWorkbookId [$afterWorksheetId Parent] if { $afterWorksheetId eq "end" } { set afterWorksheetId [Excel GetWorksheetIdByIndex $fromWorkbookId "end"] } elseif { [string is integer $afterWorksheetId] } { set index [expr int($afterWorksheetId)] set afterWorksheetId [Excel GetWorksheetIdByIndex $fromWorkbookId ] } $fromWorksheetId -callnamedargs Copy After $afterWorksheetId set afterName [Excel GetWorksheetName $afterWorksheetId] set afterWorksheetIndex [Excel GetWorksheetIndexByName $afterWorkbookId $afterName] set newWorksheetIndex [expr { $afterWorksheetIndex + 1 }] set newWorksheetId [Excel GetWorksheetIdByIndex $afterWorkbookId $newWorksheetIndex] if { $worksheetName ne "" } { Excel SetWorksheetName $newWorksheetId $worksheetName } $newWorksheetId Activate Cawt Destroy $afterWorkbookId Cawt Destroy $fromWorkbookId return $newWorksheetId }
CopyWorksheetBefore [::Excel]Top, Main, Index
Copy the contents of a worksheet before another worksheet.
Parameters
fromWorksheetId | Identifier of the source worksheet. |
beforeWorksheetId | Identifier of the destination worksheet. |
worksheetName | Name of the new worksheet. If no name is specified, or an empty string, the naming is done by Excel. Optional, default "" . |
Description
Instead of using the identifier of $beforeWorksheetId
, it is also possible to use the numeric index or the special word end
for specifying the last worksheet.
Note, that a new worksheet is generated before worksheet $beforeWorksheetId
, while CopyWorksheet overwrites the contents of an existing worksheet. The new worksheet is set as the active sheet.
Return value
Returns the identifier of the new worksheet.
See also
SelectAll, CopyWorksheet, CopyWorksheetAfter, AddWorksheet
proc ::Excel::CopyWorksheetBefore {fromWorksheetId beforeWorksheetId {worksheetName {}}} { # Copy the contents of a worksheet before another worksheet. # # fromWorksheetId - Identifier of the source worksheet. # beforeWorksheetId - Identifier of the destination worksheet. # worksheetName - Name of the new worksheet. If no name is specified, # or an empty string, the naming is done by Excel. # # Instead of using the identifier of $beforeWorksheetId, it is also possible # to use the numeric index or the special word `end` for specifying the # last worksheet. # # Note, that a new worksheet is generated before worksheet $beforeWorksheetId, # while [CopyWorksheet] overwrites the contents of an existing worksheet. # The new worksheet is set as the active sheet. # # Returns the identifier of the new worksheet. # # See also: SelectAll CopyWorksheet CopyWorksheetAfter AddWorksheet set fromWorkbookId [$fromWorksheetId Parent] set beforeWorkbookId [$beforeWorksheetId Parent] if { $beforeWorksheetId eq "end" } { set beforeWorksheetId [Excel GetWorksheetIdByIndex $fromWorkbookId "end"] } elseif { [string is integer $beforeWorksheetId] } { set index [expr int($beforeWorksheetId)] set beforeWorksheetId [Excel GetWorksheetIdByIndex $fromWorkbookId ] } $fromWorksheetId -callnamedargs Copy Before $beforeWorksheetId set beforeName [Excel GetWorksheetName $beforeWorksheetId] set beforeWorksheetIndex [Excel GetWorksheetIndexByName $beforeWorkbookId $beforeName] set newWorksheetIndex [expr { $beforeWorksheetIndex - 1 }] set newWorksheetId [Excel GetWorksheetIdByIndex $beforeWorkbookId $newWorksheetIndex] if { $worksheetName ne "" } { Excel SetWorksheetName $newWorksheetId $worksheetName } $newWorksheetId Activate Cawt Destroy $beforeWorkbookId Cawt Destroy $fromWorkbookId return $newWorksheetId }
CreateChart [::Excel]Top, Main, Index
Create a new empty chart in a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
chartType | Value of enumeration type Enum::XlChartType. |
Return value
Returns the identifier of the new chart.
See also
PlaceChart, AddLineChart, AddLineChartSimple, AddPointChartSimple, AddRadarChartSimple
proc ::Excel::CreateChart {worksheetId chartType} { # Create a new empty chart in a worksheet. # # worksheetId - Identifier of the worksheet. # chartType - Value of enumeration type [Enum::XlChartType]. # # Returns the identifier of the new chart. # # See also: PlaceChart AddLineChart AddLineChartSimple AddPointChartSimple AddRadarChartSimple set cellsId [Excel GetCellsId $worksheetId] set appId [Office GetApplicationId $cellsId] switch [Excel GetVersion $appId] { "12.0" { set chartId [[[$worksheetId Shapes] AddChart [Excel GetEnum $chartType]] Chart] } default { set chartId [$appId -with { Charts } Add] $chartId ChartType $chartType } } Cawt Destroy $cellsId Cawt Destroy $appId return $chartId }
CreateRangeString [::Excel]Top, Main, Index
Create a range string in A1 notation.
Parameters
args | List of quadruples specifying cell ranges. |
Description
The first two elements of each quadruple represent the row and column indices of the top-left cell of each range. The last two elements of each quadruple represent the row and column indices of the bottom-right cell of the range.
Note, that the list item separator is taken from locale settings of Windows. Using US English versions, this is typically ,
, in other countries ;
.
Example:
CreateRangeString 1 1 2 3 4 2 6 3 returns A1:C2;B4:C6
Return value
Returns range string in A1 notation.
See also
SelectRangeByIndex, SelectRangeByString, GetListItemSeparator, SetListItemSeparator
proc ::Excel::CreateRangeString {args} { # Create a range string in A1 notation. # # args - List of quadruples specifying cell ranges. # # The first two elements of each quadruple represent the row and column indices of the top-left cell of each range. # The last two elements of each quadruple represent the row and column indices of the bottom-right cell of the range. # # Note, that the list item separator is taken from locale settings of Windows. # Using US English versions, this is typically `,`, in other countries `;`. # # Example: # CreateRangeString 1 1 2 3 4 2 6 3 returns A1:C2;B4:C6 # # Returns range string in A1 notation. # # See also: SelectRangeByIndex SelectRangeByString GetListItemSeparator SetListItemSeparator set numEntries [llength $args] if { $numEntries % 4 != 0 } { error "CreateRangeString: Number of parameters must be divisible by four." } set numRanges [expr { $numEntries / 4 }] set ind 0 foreach { row1 col1 row2 col2 } $args { set rangeStr [Excel GetCellRange $row1 $col1 $row2 $col2] append extendedRangeStr $rangeStr if { $ind != $numRanges-1 } { append extendedRangeStr [Excel::GetListItemSeparator] } incr ind } return $extendedRangeStr }
CsvRowToList [::Excel]Top, Main, Index
Return a CSV
encoded row as a list of column values.
Parameters
rowStr | CSV encoded row as string. |
Return value
Returns the CSV
encoded row as a list of column values.
See also
proc ::Excel::CsvRowToList {rowStr} { # Return a `CSV` encoded row as a list of column values. # # rowStr - `CSV` encoded row as string. # # Returns the `CSV` encoded row as a list of column values. # # See also: ListToCsvRow variable sSepChar set tmpList {} set wordCount 1 set combine 0 set wordList [split $rowStr $sSepChar] foreach word $wordList { set len [string length $word] if { [string index $word end] eq "\"" } { set endQuote 1 } else { set endQuote 0 } if { [string index $word 0] eq "\"" } { set begQuote 1 } else { set begQuote 0 } if { $begQuote && $endQuote && ($len % 2 == 1) } { set onlyQuotes [regexp {^[\"]+$} $word] if { $onlyQuotes } { if { $combine } { set begQuote 0 } else { set endQuote 0 } } } if { $begQuote && $endQuote && ($len == 2) } { set begQuote 0 set endQuote 0 } if { $begQuote && $endQuote } { lappend tmpList [string map {\"\" \"} [string range $word 1 end-1]] set combine 0 incr wordCount } elseif { !$begQuote && $endQuote } { append tmpWord [string range $word 0 end-1] lappend tmpList [string map {\"\" \"} $tmpWord] set combine 0 incr wordCount } elseif { $begQuote && !$endQuote } { set tmpWord [string range $word 1 end] append tmpWord $sSepChar set combine 1 } else { if { $combine } { append tmpWord [string map {\"\" \"} $word] append tmpWord $sSepChar } else { lappend tmpList [string map {\"\" \"} $word] set combine 0 incr wordCount } } } return $tmpList }
CsvStringToMatrix [::Excel]Top, Main, Index
Return a matrix from a CSV
encoded table string.
Parameters
csvString | CSV encoded table as string. |
Return value
Returns the matrix from the CSV
encoded table string.
See also
MatrixToCsvString, CsvRowToList
proc ::Excel::CsvStringToMatrix {csvString} { # Return a matrix from a `CSV` encoded table string. # # csvString - `CSV` encoded table as string. # # Returns the matrix from the `CSV` encoded table string. # # See also: MatrixToCsvString CsvRowToList set trimString [string trim $csvString '\0''\n'] foreach row [lrange [split $trimString "\n"] 0 end] { set row [string trim $row "\r"] lappend matrixList [Excel CsvRowToList $row] } return $matrixList }
DeleteColumn [::Excel]Top, Main, Index
Delete a column.
Parameters
worksheetId | Identifier of the worksheet. |
col | Column number. Column numbering starts with 1. |
Description
The specified column is deleted.
Return value
Returns no value.
See also
InsertColumn, DuplicateColumn, HideColumn, DeleteRow, DeleteWorksheet
proc ::Excel::DeleteColumn {worksheetId col} { # Delete a column. # # worksheetId - Identifier of the worksheet. # col - Column number. Column numbering starts with 1. # # The specified column is deleted. # # Returns no value. # # See also: InsertColumn DuplicateColumn HideColumn DeleteRow DeleteWorksheet set cell [Excel SelectCellByIndex $worksheetId 1 $col] $cell -with { EntireColumn } Delete $::Excel::xlShiftToLeft Cawt Destroy $cell }
DeleteRow [::Excel]Top, Main, Index
Delete a row.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
Description
The specified row is deleted.
Return value
Returns no value.
See also
InsertRow, DuplicateRow, HideRow, DeleteColumn, DeleteWorksheet
proc ::Excel::DeleteRow {worksheetId row} { # Delete a row. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # # The specified row is deleted. # # Returns no value. # # See also: InsertRow DuplicateRow HideRow DeleteColumn DeleteWorksheet set cell [Excel SelectCellByIndex $worksheetId $row 1] $cell -with { EntireRow } Delete $::Excel::xlShiftUp Cawt Destroy $cell }
DeleteWorksheet [::Excel]Top, Main, Index
Delete a worksheet.
Parameters
workbookId | Identifier of the workbook containing the worksheet. |
worksheetId | Identifier of the worksheet to delete. |
Description
If the number of worksheets before deletion is 1, an error is thrown.
Return value
Returns no value.
See also
DeleteWorksheetByIndex, GetWorksheetIdByIndex, AddWorksheet
proc ::Excel::DeleteWorksheet {workbookId worksheetId} { # Delete a worksheet. # # workbookId - Identifier of the workbook containing the worksheet. # worksheetId - Identifier of the worksheet to delete. # # If the number of worksheets before deletion is 1, an error is thrown. # # Returns no value. # # See also: DeleteWorksheetByIndex GetWorksheetIdByIndex AddWorksheet set count [$workbookId -with { Worksheets } Count] if { $count == 1 } { error "DeleteWorksheet: Cannot delete last worksheet." } # Delete the specified worksheet. # This will cause alert dialogs to be displayed unless # they are turned off. set appId [Office GetApplicationId $workbookId] Excel::ShowAlerts $appId false $worksheetId Delete # Turn the alerts back on. Excel::ShowAlerts $appId true Cawt Destroy $appId }
DeleteWorksheetByIndex [::Excel]Top, Main, Index
Delete a worksheet identified by its index.
Parameters
workbookId | Identifier of the workbook containing the worksheet. |
index | Index of the worksheet to delete. |
Description
The left-most worksheet has index 1. If the index is out of bounds, or the number of worksheets before deletion is 1, an error is thrown.
Return value
Returns no value.
See also
GetNumWorksheets, GetWorksheetIdByIndex, AddWorksheet
proc ::Excel::DeleteWorksheetByIndex {workbookId index} { # Delete a worksheet identified by its index. # # workbookId - Identifier of the workbook containing the worksheet. # index - Index of the worksheet to delete. # # Returns no value. # # The left-most worksheet has index 1. # If the index is out of bounds, or the number of worksheets before deletion is 1, # an error is thrown. # # See also: GetNumWorksheets GetWorksheetIdByIndex AddWorksheet set count [Excel GetNumWorksheets $workbookId] if { $count == 1 } { error "DeleteWorksheetByIndex: Cannot delete last worksheet." } if { $index < 1 || $index > $count } { error "DeleteWorksheetByIndex: Invalid index $index given." } # Delete the specified worksheet. # This will cause alert dialogs to be displayed unless # they are turned off. set appId [Office GetApplicationId $workbookId] Excel::ShowAlerts $appId false set worksheetId [$workbookId -with { Worksheets } Item [expr $index]] $worksheetId Delete # Turn the alerts back on. Excel::ShowAlerts $appId true Cawt Destroy $worksheetId Cawt Destroy $appId }
DiffExcelFiles [::Excel]Top, Main, Index
Compare two Excel files visually.
Parameters
excelBaseFile | Name of the base Excel file. |
excelNewFile | Name of the new Excel file. |
args | Mark color. |
Description
The two Excel files are opened in read-only mode and the cells, which are different in the two Excel files are set to the mark color. As Excel does not allow to load two files with identical names (even from different directories), in that case the $excelBaseFile
is copied into a temporary directory and renamed.
The algorithm used is identical to the Excel diff script used in Tortoise SVN.
Color value may be specified in a format acceptable by procedure ::Cawt::GetColor, i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values. If no mark color is specified, it is set to red.
Return value
Returns the identifier of the new Excel application instance.
See also
proc ::Excel::DiffExcelFiles {excelBaseFile excelNewFile args} { # Compare two Excel files visually. # # excelBaseFile - Name of the base Excel file. # excelNewFile - Name of the new Excel file. # args - Mark color. # # The two Excel files are opened in read-only mode and the cells, # which are different in the two Excel files are set to the mark color. # As Excel does not allow to load two files with identical names (even # from different directories), in that case the $excelBaseFile is copied # into a temporary directory and renamed. # # The algorithm used is identical to the Excel diff script used in Tortoise SVN. # # Color value may be specified in a format acceptable by procedure [::Cawt::GetColor], # i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values. # If no mark color is specified, it is set to red. # # Returns the identifier of the new Excel application instance. # # See also: OpenNew set fastMode false if { ! [file exists $excelBaseFile] } { error "DiffExcelFiles: Base file $excelBaseFile does not exists" } if { ! [file exists $excelNewFile] } { error "DiffExcelFiles: New file $excelNewFile does not exists" } if { [file normalize $excelBaseFile] eq [file normalize $excelNewFile] } { error "DiffExcelFiles: Base and new file are equal. Cannot compare." } if { [file tail $excelBaseFile] eq [file tail $excelNewFile] } { set tailName [file tail $excelBaseFile] set rootName [file rootname $tailName] set extension [file extension $tailName] set tmpName [format "%s_BaseTmp%s" $rootName $extension] set tmpName [file join [Cawt GetTmpDir] $tmpName] file copy -force $excelBaseFile $tmpName set excelBaseFile $tmpName } set appId [Excel OpenNew true] set baseWorkbookId [Excel OpenWorkbook $appId [file nativename $excelBaseFile] -readonly true] set newWorkbookId [Excel OpenWorkbook $appId [file nativename $excelNewFile] -readonly true] if { [Excel IsWorkbookProtected $baseWorkbookId] } { error "DiffExcelFiles: Unable to arrange windows, because $excelBaseFile is protected." } if { [Excel IsWorkbookProtected $newWorkbookId] } { error "DiffExcelFiles: Unable to arrange windows, because $excelNewFile is protected." } set winId [$appId -with { Windows } Item [expr 2]] set caption [$winId Caption] $appId -with { Windows } CompareSideBySideWith $caption Excel SetWindowState $appId $::Excel::xlMaximized Excel ArrangeWindows $appId $::Excel::xlArrangeStyleHorizontal if { ! $fastMode && [Excel IsWorkbookProtected $newWorkbookId] } { puts "Fall back to fast mode because [Excel GetWorkbookName $newWorkbookId] is protected." set fastMode true } Cawt Destroy $winId # Create a special workbook for formula convertion. set convWorkbookId [Excel AddWorkbook $appId] if { [llength $args] == 0 } { set markColor [Cawt GetColor "red"] } else { set markColor [Cawt GetColor {*}$args] } set numWorksheets [Excel GetNumWorksheets $newWorkbookId] for { set i 1 } { $i <= $numWorksheets } { incr i } { set baseWorksheetId [Excel GetWorksheetIdByIndex $baseWorkbookId $i] set newWorksheetId [Excel GetWorksheetIdByIndex $newWorkbookId $i] Excel UnhideWorksheet $baseWorksheetId Excel UnhideWorksheet $newWorksheetId Excel SetWorksheetTabColor $baseWorksheetId 0 128 0 Excel SetWorksheetTabColor $newWorksheetId 0 128 0 if { ! $fastMode } { set lastWorksheetId [Excel GetWorksheetIdByIndex $newWorkbookId [Excel GetNumWorksheets $newWorkbookId]] set dummyWorksheetId [Excel CopyWorksheetAfter $baseWorksheetId $lastWorksheetId "Dummy_for_Comparison_$i"] $dummyWorksheetId Visible [expr $::Excel::xlSheetVisible] Excel SetWorksheetTabColor $dummyWorksheetId 127 127 255 Cawt Destroy $dummyWorksheetId Cawt Destroy $lastWorksheetId } if { [Excel IsWorksheetProtected $newWorksheetId] } { error "DiffExcelFiles: Unable to mark differences because the Worksheet is protected." } else { $newWorksheetId -with { Cells FormatConditions } Delete if { $fastMode } { set formula [format "=INDIRECT(\"%s!\"&ADDRESS(ROW(),COLUMN()))" [Excel::_ToAbsoluteReference $baseWorksheetId]] } else { set formula [format "=INDIRECT(\"Dummy_for_Comparison_%d!\"&ADDRESS(ROW(),COLUMN()))" $i] } set formula [Excel::_ConvertFormula $convWorkbookId $formula] $newWorksheetId -with { Cells FormatConditions } Add $::Excel::xlCellValue $::Excel::xlNotEqual $formula set formatCondition [$newWorksheetId -with { Cells FormatConditions } Item 1] $formatCondition -with { Interior } Color $markColor Cawt Destroy $formatCondition } Cawt Destroy $newWorksheetId Cawt Destroy $baseWorksheetId } # Close the special workbook quietly $convWorkbookId Saved [Cawt TclBool true] $convWorkbookId Close # Activate first Worksheet Excel GetWorksheetIdByIndex $baseWorkbookId 1 true Excel GetWorksheetIdByIndex $newWorkbookId 1 true # Suppress save dialog if nothing changed $baseWorkbookId Saved [Cawt TclBool true] $newWorkbookId Saved [Cawt TclBool true] return $appId }
DuplicateColumn [::Excel]Top, Main, Index
Duplicate a column.
Parameters
worksheetId | Identifier of the worksheet. |
col | Column number. Column numbering starts with 1. |
Description
The specified column is duplicated with formatting and formulas.
Return value
Returns no value.
See also
InsertColumn, DeleteColumn, HideColumn, DuplicateRow
proc ::Excel::DuplicateColumn {worksheetId col} { # Duplicate a column. # # worksheetId - Identifier of the worksheet. # col - Column number. Column numbering starts with 1. # # The specified column is duplicated with formatting and formulas. # # Returns no value. # # See also: InsertColumn DeleteColumn HideColumn DuplicateRow set cell [Excel SelectCellByIndex $worksheetId 1 $col] $cell -with { EntireColumn } Copy Cawt Destroy $cell set cell [Excel SelectCellByIndex $worksheetId 1 [expr {$col + 1}]] $cell -with { EntireColumn } Insert $::Excel::xlToRight Cawt Destroy $cell }
DuplicateRow [::Excel]Top, Main, Index
Duplicate a row.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
Description
The specified row is duplicated with formatting and formulas.
Return value
Returns no value.
See also
InsertRow, DeleteRow, HideRow, DuplicateColumn
proc ::Excel::DuplicateRow {worksheetId row} { # Duplicate a row. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # # The specified row is duplicated with formatting and formulas. # # Returns no value. # # See also: InsertRow DeleteRow HideRow DuplicateColumn set cell [Excel SelectCellByIndex $worksheetId $row 1] $cell -with { EntireRow } Copy Cawt Destroy $cell set cell [Excel SelectCellByIndex $worksheetId [expr {$row + 1}] 1] $cell -with { EntireRow } Insert $::Excel::xlUp Cawt Destroy $cell }
ExcelFileToHtmlFile [::Excel]Top, Main, Index
Convert an Excel file to a HTML table file.
Parameters
excelFileName | Name of the Excel input file. |
htmlFileName | Name of the HTML output file. |
args | Options described below. |
-quit <bool> | Set to true to quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Default value: true. |
-target <bool> | Set to true to generate a target attribute for hyperlinks. Otherwise no target attribute for hyperlinks, i.e. link opens in same tab. Default value: true. |
-worksheet <int> | Set the worksheet name or index to convert. Default value: 0 |
Description
Note, that the Excel Workbook is opened in read-only mode.
Return value
Returns the Excel application identifier, if -quit
is false. Otherwise no return value.
See also
WorksheetToHtmlFile, WriteHtmlFile, MediaWikiFileToExcelFile, WikitFileToExcelFile
proc ::Excel::ExcelFileToHtmlFile {excelFileName htmlFileName args} { # Convert an Excel file to a HTML table file. # # excelFileName - Name of the Excel input file. # htmlFileName - Name of the HTML output file. # args - Options described below. # # -worksheet <int> - Set the worksheet name or index to convert. # Default value: 0 # -quit <bool> - Set to true to quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # Default value: true. # -target <bool> - Set to true to generate a target attribute for hyperlinks. # Otherwise no target attribute for hyperlinks, i.e. link opens in same tab. # Default value: true. # # Note, that the Excel Workbook is opened in read-only mode. # # Returns the Excel application identifier, if `-quit` is false. # Otherwise no return value. # # See also: WorksheetToHtmlFile WriteHtmlFile MediaWikiFileToExcelFile WikitFileToExcelFile set opts [dict create -worksheet 0 -quit true -target true ] foreach { key value } $args { if { $value eq "" } { error "ExcelFileToHtmlFile: No value specified for key \"$key\"" } if { [dict exists $opts $key] } { dict set opts $key $value } else { error "ExcelFileToHtmlFile: Unknown option \"$key\" specified" } } set worksheetNameOrIndex [dict get $opts "-worksheet"] set appId [Excel OpenNew true] set workbookId [Excel OpenWorkbook $appId $excelFileName -readonly true] if { [string is integer $worksheetNameOrIndex] } { set worksheetId [Excel GetWorksheetIdByIndex $workbookId [expr int($worksheetNameOrIndex)]] } else { set worksheetId [Excel GetWorksheetIdByName $workbookId $worksheetNameOrIndex] } Excel WorksheetToHtmlFile $worksheetId $htmlFileName [dict get $opts "-target"] if { [dict get $opts "-quit"] } { Excel Quit $appId } else { return $appId } }
ExcelFileToMatlabFile [::Excel]Top, Main, Index
Convert an Excel file to a Matlab table file.
Parameters
excelFileName | Name of the Excel input file. |
matFileName | Name of the Matlab output file. |
worksheetNameOrIndex | Worksheet name or index to convert. Optional, default 0 . |
useHeader | If set to true, use the first row of the worksheet as the header of the Matlab file. Otherwise do not generate a Matlab file header. All worksheet cells are interpreted as data. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
Description
Note, that the Excel Workbook is opened in read-only mode.
Note: Only Matlab Level 4 files are currently supported.
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
MatlabFileToWorksheet, MatlabFileToExcelFile, ReadMatlabFile, WriteMatlabFile
proc ::Excel::ExcelFileToMatlabFile {excelFileName matFileName {worksheetNameOrIndex 0} {useHeader true} {quitExcel true}} { # Convert an Excel file to a Matlab table file. # # excelFileName - Name of the Excel input file. # matFileName - Name of the Matlab output file. # worksheetNameOrIndex - Worksheet name or index to convert. # useHeader - If set to true, use the first row of the worksheet as the header # of the Matlab file. # Otherwise do not generate a Matlab file header. All worksheet # cells are interpreted as data. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # # Note, that the Excel Workbook is opened in read-only mode. # # **Note:** Only Matlab Level 4 files are currently supported. # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: MatlabFileToWorksheet MatlabFileToExcelFile # ReadMatlabFile WriteMatlabFile set appId [Excel OpenNew true] set workbookId [Excel OpenWorkbook $appId $excelFileName -readonly true] if { [string is integer $worksheetNameOrIndex] } { set worksheetId [Excel GetWorksheetIdByIndex $workbookId [expr int($worksheetNameOrIndex)]] } else { set worksheetId [Excel GetWorksheetIdByName $workbookId $worksheetNameOrIndex] } Excel WorksheetToMatlabFile $worksheetId $matFileName $useHeader if { $quitExcel } { Excel Quit $appId } else { return $appId } }
ExcelFileToMediaWikiFile [::Excel]Top, Main, Index
Convert an Excel file to a MediaWiki table file.
Parameters
excelFileName | Name of the Excel input file. |
wikiFileName | Name of the MediaWiki output file. |
worksheetNameOrIndex | Worksheet name or index to convert. Optional, default 1 . |
useHeader | If set to true, use the first row of the worksheet as the header of the MediaWiki table. Otherwise do not generate a MediaWiki table header. All worksheet cells are interpreted as data. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
Description
Note, that the Excel Workbook is opened in read-only mode.
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
MediaWikiFileToWorksheet, MediaWikiFileToExcelFile, ReadMediaWikiFile, WriteMediaWikiFile, WikitFileToExcelFile
proc ::Excel::ExcelFileToMediaWikiFile {excelFileName wikiFileName {worksheetNameOrIndex 1} {useHeader true} {quitExcel true}} { # Convert an Excel file to a MediaWiki table file. # # excelFileName - Name of the Excel input file. # wikiFileName - Name of the MediaWiki output file. # worksheetNameOrIndex - Worksheet name or index to convert. # useHeader - If set to true, use the first row of the worksheet as the header # of the MediaWiki table. # Otherwise do not generate a MediaWiki table header. All worksheet # cells are interpreted as data. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # # Note, that the Excel Workbook is opened in read-only mode. # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: MediaWikiFileToWorksheet MediaWikiFileToExcelFile # ReadMediaWikiFile WriteMediaWikiFile WikitFileToExcelFile set appId [Excel OpenNew true] set workbookId [Excel OpenWorkbook $appId $excelFileName -readonly true] if { [string is integer $worksheetNameOrIndex] } { set worksheetId [Excel GetWorksheetIdByIndex $workbookId [expr int($worksheetNameOrIndex)]] } else { set worksheetId [Excel GetWorksheetIdByName $workbookId $worksheetNameOrIndex] } Excel WorksheetToMediaWikiFile $worksheetId $wikiFileName $useHeader if { $quitExcel } { Excel Quit $appId } else { return $appId } }
ExcelFileToRawImageFile [::Excel]Top, Main, Index
Convert an Excel file to a raw photo image file.
Parameters
excelFileName | Name of the Excel input file. |
rawFileName | Name of the image output file. |
worksheetNameOrIndex | Worksheet name or index to convert. Optional, default 0 . |
useHeader | If set to true, use the first row of the worksheet as the header of the raw image file. Otherwise do not generate a raw image file header. All worksheet cells are interpreted as data. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
pixelType | Pixel type: byte , short , float . Optional, default float . |
Description
Note, that the Excel Workbook is opened in read-only mode.
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
RawImageFileToWorksheet, RawImageFileToExcelFile, ReadRawImageFile, WriteRawImageFile
proc ::Excel::ExcelFileToRawImageFile {excelFileName rawFileName {worksheetNameOrIndex 0} {useHeader true} {quitExcel true} {pixelType float}} { # Convert an Excel file to a raw photo image file. # # excelFileName - Name of the Excel input file. # rawFileName - Name of the image output file. # worksheetNameOrIndex - Worksheet name or index to convert. # useHeader - If set to true, use the first row of the worksheet as the header # of the raw image file. # Otherwise do not generate a raw image file header. All worksheet # cells are interpreted as data. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # pixelType - Pixel type: `byte`, `short`, `float`. # # Note, that the Excel Workbook is opened in read-only mode. # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: RawImageFileToWorksheet RawImageFileToExcelFile ReadRawImageFile WriteRawImageFile set appId [Excel OpenNew true] set workbookId [Excel OpenWorkbook $appId $excelFileName -readonly true] if { [string is integer $worksheetNameOrIndex] } { set worksheetId [Excel GetWorksheetIdByIndex $workbookId [expr int($worksheetNameOrIndex)]] } else { set worksheetId [Excel GetWorksheetIdByName $workbookId $worksheetNameOrIndex] } Excel WorksheetToRawImageFile $worksheetId $rawFileName $useHeader $pixelType if { $quitExcel } { Excel Quit $appId } else { return $appId } }
ExcelFileToWikitFile [::Excel]Top, Main, Index
Convert an Excel file to a Wikit table file.
Parameters
excelFileName | Name of the Excel input file. |
wikiFileName | Name of the Wikit output file. |
worksheetNameOrIndex | Worksheet name or index to convert. Optional, default 1 . |
useHeader | If set to true, use the first row of the worksheet as the header of the Wikit table. Otherwise do not generate a Wikit table header. All worksheet cells are interpreted as data. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
Description
Note, that the Excel Workbook is opened in read-only mode.
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
WikitFileToWorksheet, WikitFileToExcelFile, ReadWikitFile, WriteWikitFile, MediaWikiFileToExcelFile
proc ::Excel::ExcelFileToWikitFile {excelFileName wikiFileName {worksheetNameOrIndex 1} {useHeader true} {quitExcel true}} { # Convert an Excel file to a Wikit table file. # # excelFileName - Name of the Excel input file. # wikiFileName - Name of the Wikit output file. # worksheetNameOrIndex - Worksheet name or index to convert. # useHeader - If set to true, use the first row of the worksheet as the header # of the Wikit table. # Otherwise do not generate a Wikit table header. All worksheet # cells are interpreted as data. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # # Note, that the Excel Workbook is opened in read-only mode. # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: WikitFileToWorksheet WikitFileToExcelFile # ReadWikitFile WriteWikitFile MediaWikiFileToExcelFile set appId [Excel OpenNew true] set workbookId [Excel OpenWorkbook $appId $excelFileName -readonly true] if { [string is integer $worksheetNameOrIndex] } { set worksheetId [Excel GetWorksheetIdByIndex $workbookId [expr int($worksheetNameOrIndex)]] } else { set worksheetId [Excel GetWorksheetIdByName $workbookId $worksheetNameOrIndex] } Excel WorksheetToWikitFile $worksheetId $wikiFileName $useHeader if { $quitExcel } { Excel Quit $appId } else { return $appId } }
FormatHeaderRow [::Excel]Top, Main, Index
Format a row as a header row.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
startCol | Column number of formatting start. Column numbering starts with 1. |
endCol | Column number of formatting end. Column numbering starts with 1. |
Description
The cell values of a header are formatted as bold text with both vertical and horizontal centered alignment.
Return value
Returns no value.
See also
proc ::Excel::FormatHeaderRow {worksheetId row startCol endCol} { # Format a row as a header row. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # startCol - Column number of formatting start. Column numbering starts with 1. # endCol - Column number of formatting end. Column numbering starts with 1. # # The cell values of a header are formatted as bold text with both vertical and # horizontal centered alignment. # # Returns no value. # # See also: SetHeaderRow set header [Excel SelectRangeByIndex $worksheetId $row $startCol $row $endCol] Excel SetRangeHorizontalAlignment $header $::Excel::xlCenter Excel SetRangeVerticalAlignment $header $::Excel::xlCenter Excel SetRangeFontBold $header Cawt Destroy $header }
FreezePanes [::Excel]Top, Main, Index
Freeze a range in a worksheet identified by its row/column index.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
onOff | If set to true, freeze the range. Otherwise unfreeze the range. Optional, default true . |
Description
The rows and columns with indices lower than the specified values are freezed for scrolling. If a row or a column should not be freezed, a value of zero for the corresponding parameter should be given.
See also
proc ::Excel::FreezePanes {worksheetId row col {onOff true}} { # Freeze a range in a worksheet identified by its row/column index. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # onOff - If set to true, freeze the range. # Otherwise unfreeze the range. # # The rows and columns with indices lower than the specified values are freezed for scrolling. # If a row or a column should not be freezed, a value of zero for the corresponding parameter # should be given. # # See also: SelectCellByIndex $worksheetId Activate set appId [Office GetApplicationId $worksheetId] set actWin [$appId ActiveWindow] if { $onOff } { if { $col > 0 } { $actWin SplitColumn $col } if { $row > 0 } { $actWin SplitRow $row } } $actWin FreezePanes [Cawt TclBool $onOff] Cawt Destroy $actWin Cawt Destroy $appId }
GetActiveWorkbook [::Excel]Top, Main, Index
Return the active workbook of an application.
Parameters
appId | Identifier of the Excel instance. |
Return value
Returns the identifier of the active workbook.
See also
proc ::Excel::GetActiveWorkbook {appId} { # Return the active workbook of an application. # # appId - Identifier of the Excel instance. # # Returns the identifier of the active workbook. # # See also: OpenWorkbook return [$appId ActiveWorkbook] }
GetCellComment [::Excel]Top, Main, Index
Return the comment text of a cell.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
Description
If the cell does not contain a comment, an empty string is returned.
Return value
Returns the comment text of a cell.
See also
SetRangeComment, SetCommentDisplayMode, SetCommentSize, GetCellValue
proc ::Excel::GetCellComment {worksheetId row col} { # Return the comment text of a cell. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # # If the cell does not contain a comment, an empty string is returned. # # Returns the comment text of a cell. # # See also: SetRangeComment SetCommentDisplayMode SetCommentSize GetCellValue set rangeId [Excel SelectCellByIndex $worksheetId $row $col] set commentId [$rangeId Comment] set commentText "" if { [Cawt IsComObject $commentId] } { set commentText [$commentId Text] } Cawt Destroy $commentId Cawt Destroy $rangeId return $commentText }
GetCellIdByIndex [::Excel]Top, Main, Index
Return a cell of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
Return value
Returns the cell identifier of the cell with index (row, col).
See also
SelectCellByIndex, AddWorksheet
proc ::Excel::GetCellIdByIndex {worksheetId row col} { # Return a cell of a worksheet. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # # Returns the cell identifier of the cell with index (row, col). # # See also: SelectCellByIndex AddWorksheet set cellsId [Excel GetCellsId $worksheetId] set cell [$cellsId Item [expr {int($row)}] [expr {int($col)}]] Cawt Destroy $cellsId return $cell }
GetCellRange [::Excel]Top, Main, Index
Return a numeric cell range as an Excel range string in A1 notation.
Parameters
row1 | Row number of upper-left corner of the cell range. |
col1 | Column number of upper-left corner of the cell range. |
row2 | Row number of lower-right corner of the cell range. |
col2 | Column number of lower-right corner of the cell range. |
Description
Example:
[GetCellRange 1 2 5 7] returns string "B1:G5".
Return value
Returns the numeric cell range as an Excel range string in A1 notation.
See also
proc ::Excel::GetCellRange {row1 col1 row2 col2} { # Return a numeric cell range as an Excel range string in A1 notation. # # row1 - Row number of upper-left corner of the cell range. # col1 - Column number of upper-left corner of the cell range. # row2 - Row number of lower-right corner of the cell range. # col2 - Column number of lower-right corner of the cell range. # # Example: # [GetCellRange 1 2 5 7] returns string "B1:G5". # # Returns the numeric cell range as an Excel range string in A1 notation. # # See also: GetColumnRange set range [format "%s%d:%s%d" [Excel ColumnIntToChar $col1] $row1 [Excel ColumnIntToChar $col2] $row2] return $range }
GetCellsId [::Excel]Top, Main, Index
Return the cells identifier of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the range of all cells from the worksheet. This corresponds to the method Cells() of the Worksheet object.
proc ::Excel::GetCellsId {worksheetId} { # Return the cells identifier of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the range of all cells from the worksheet. This corresponds to the # method Cells() of the Worksheet object. set cellsId [$worksheetId Cells] return $cellsId }
GetCellValue [::Excel]Top, Main, Index
Return the value of a cell.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
fmt | Format of the cell. Possible values: text , int , real . Optional, default text . |
Description
Depending on the format the value of the cell is returned as a string, integer number or a floating-point number. If the value could not be retrieved, an error is thrown.
Return value
Returns the value of the cell.
See also
GetCellValueA1, SetCellValue, ColumnCharToInt
proc ::Excel::GetCellValue {worksheetId row col {fmt text}} { # Return the value of a cell. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # fmt - Format of the cell. Possible values: `text`, `int`, `real`. # # Depending on the format the value of the cell is returned as a string, # integer number or a floating-point number. # If the value could not be retrieved, an error is thrown. # # Returns the value of the cell. # # See also: GetCellValueA1 SetCellValue ColumnCharToInt set cellsId [Excel GetCellsId $worksheetId] set cell [$cellsId Item [expr {int($row)}] [expr {int($col)}]] set retVal [catch {$cell Value} val] if { $retVal != 0 } { error "GetCellValue: Unable to get value of cell ($row, $col)" } Cawt Destroy $cell Cawt Destroy $cellsId if { $fmt eq "text" } { return $val } elseif { $fmt eq "int" } { return [expr {int ($val)}] } elseif { $fmt eq "real" } { return [expr {double ($val)}] } else { error "GetCellValue: Unknown format $fmt" } }
GetCellValueA1 [::Excel]Top, Main, Index
Return the value of a cell.
Parameters
worksheetId | Identifier of the worksheet. |
cellA1 | Cell identifier in A1 notation. |
fmt | Format of the cell. Possible values: text , int , real . Optional, default text . |
Description
Depending on the format the value of the cell is returned as a string, integer number or a floating-point number. If the value could not be retrieved, an error is thrown.
Return value
Returns the value of the cell.
See also
GetCellValue, SetCellValue, ColumnCharToInt
proc ::Excel::GetCellValueA1 {worksheetId cellA1 {fmt text}} { # Return the value of a cell. # # worksheetId - Identifier of the worksheet. # cellA1 - Cell identifier in A1 notation. # fmt - Format of the cell. Possible values: `text`, `int`, `real`. # # Depending on the format the value of the cell is returned as a string, # integer number or a floating-point number. # If the value could not be retrieved, an error is thrown. # # Returns the value of the cell. # # See also: GetCellValue SetCellValue ColumnCharToInt regexp {([[:alpha:]]+)([[:digit:]]+)} $cellA1 -> colStr row set col [Excel ColumnCharToInt $colStr] return [Excel GetCellValue $worksheetId $row $col $fmt] }
GetChartNumSeries [::Excel]Top, Main, Index
Return the number of series of a chart.
Parameters
chartId | Identifier of the chart. |
Return value
Returns the number of series of the chart.
See also
proc ::Excel::GetChartNumSeries {chartId} { # Return the number of series of a chart. # # chartId - Identifier of the chart. # # Returns the number of series of the chart. # # See also: GetChartSeries CreateChart return [$chartId -with { SeriesCollection } Count] }
GetChartSeries [::Excel]Top, Main, Index
Get a specific series of a chart.
Parameters
chartId | Identifier of the chart. |
index | Index of the series. Index numbering starts with 1. |
Return value
Returns the series identifier.
See also
GetChartNumSeries, CreateChart, SetSeriesAttributes
proc ::Excel::GetChartSeries {chartId index} { # Get a specific series of a chart. # # chartId - Identifier of the chart. # index - Index of the series. Index numbering starts with 1. # # Returns the series identifier. # # See also: GetChartNumSeries CreateChart SetSeriesAttributes return [$chartId -with { SeriesCollection } Item [expr {int($index)}]] }
GetColumnNumber [::Excel]Top, Main, Index
Return an Excel column string or number as a column number.
Parameters
colStrOrInt | Column string. |
Return value
Returns the corresponding column number.
See also
proc ::Excel::GetColumnNumber {colStrOrInt} { # Return an Excel column string or number as a column number. # # colStrOrInt - Column string. # # Returns the corresponding column number. # # See also: ColumnCharToInt if { [string is integer $colStrOrInt] } { return [expr int($colStrOrInt)] } else { return [Excel ColumnCharToInt $colStrOrInt] } }
GetColumnRange [::Excel]Top, Main, Index
Return a numeric column range as an Excel range string.
Parameters
col1 | Column number of the left-most column. |
col2 | Column number of the right-most column. |
Description
Example:
[GetColumnRange 2 7] returns string "B:G".
Return value
Returns the numeric column range as an Excel range string.
See also
proc ::Excel::GetColumnRange {col1 col2} { # Return a numeric column range as an Excel range string. # # col1 - Column number of the left-most column. # col2 - Column number of the right-most column. # # Example: # [GetColumnRange 2 7] returns string "B:G". # # Returns the numeric column range as an Excel range string. # # See also: GetCellRange set range [format "%s:%s" [Excel ColumnIntToChar $col1] [Excel ColumnIntToChar $col2]] return $range }
GetColumnValues [::Excel]Top, Main, Index
Return column values as a Tcl list.
Parameters
worksheetId | Identifier of the worksheet. |
col | Column number. Column numbering starts with 1. |
startRow | Row number of start. Row numbering starts with 1. If negative or zero, start at first available row. Optional, default 0 . |
numVals | If negative or zero, all available column values are returned. If positive, only numVals values of the column are returned. Optional, default 0 . |
Description
Note, that the functionality of this procedure has changed slightly with CAWT versions greater than 1.0.5: If $startRow
is not specified, $startRow
is not set to 1, but it is set to the first available row. Possible incompatibility.
Return value
Returns the values of the specified column or column range as a Tcl list.
See also
SetColumnValues, GetRowValues, GetCellValue, ColumnCharToInt, GetFirstUsedRow
proc ::Excel::GetColumnValues {worksheetId col {startRow 0} {numVals 0}} { # Return column values as a Tcl list. # # worksheetId - Identifier of the worksheet. # col - Column number. Column numbering starts with 1. # startRow - Row number of start. Row numbering starts with 1. # If negative or zero, start at first available row. # numVals - If negative or zero, all available column values are returned. # If positive, only numVals values of the column are returned. # # Note, that the functionality of this procedure has changed slightly with # CAWT versions greater than 1.0.5: # If $startRow is not specified, $startRow is not set to 1, but it is set to # the first available row. # Possible incompatibility. # # Returns the values of the specified column or column range as a Tcl list. # # See also: SetColumnValues GetRowValues GetCellValue ColumnCharToInt GetFirstUsedRow if { $startRow <= 0 } { set startRow [Excel GetFirstUsedRow $worksheetId] } if { $numVals <= 0 } { set numVals [expr { $startRow + [Excel GetLastUsedRow $worksheetId] - 1 }] } set valList [list] set row $startRow set ind 0 while { $ind < $numVals } { lappend valList [Excel GetCellValue $worksheetId $row $col] incr ind incr row } # Remove empty cell values from the end of the values list. incr ind -1 while { $ind >= 0 && [lindex $valList $ind] eq "" } { incr ind -1 } return [lrange $valList 0 $ind] }
GetCsvSeparatorChar [::Excel]Top, Main, Index
Returns the column separator character.
Return value
Returns the column separator character.
proc ::Excel::GetCsvSeparatorChar {} { # Returns the column separator character. variable sSepChar return $sSepChar }
GetCurrencyFormat [::Excel]Top, Main, Index
Return an Excel number format string for currencies.
Parameters
appId | Identifier of the Excel instance. |
currency | String identifying the currency symbol. |
pre | Number of digits before the decimal point. Optional, default 0 . |
post | Number of digits after the decimal point. Optional, default 00 . |
floatSep | Specify the floating point separator character. Optional, default "" . |
Description
The currency may be specified either by using one of the predefined names (Dollar, Euro, Pound, Yen, DM) or by specifying an Unicode character.
Example:
[GetCurrencyFormat "\u20B0" "0" "00"] will return the Excel format string to show floating point values with 2 digits after the decimal point and a German Penny Sign as currency symbol.
Return value
Returns the corresponding Excel number format string for currencies.
See also
SetRangeFormat, GetNumberFormat
proc ::Excel::GetCurrencyFormat {appId currency {pre 0} {post 00} {floatSep {}}} { # Return an Excel number format string for currencies. # # appId - Identifier of the Excel instance. # currency - String identifying the currency symbol. # pre - Number of digits before the decimal point. # post - Number of digits after the decimal point. # floatSep - Specify the floating point separator character. # # The currency may be specified either by using one of the predefined names # (Dollar, Euro, Pound, Yen, DM) or by specifying an Unicode character. # # Example: # [GetCurrencyFormat "\u20B0" "0" "00"] will return the Excel format string # to show floating point values with 2 digits after the decimal point # and a German Penny Sign as currency symbol. # # Returns the corresponding Excel number format string for currencies. # # See also: SetRangeFormat GetNumberFormat set numberFormat [Excel GetNumberFormat $appId $pre $post $floatSep] switch -exact -nocase -- $currency { "Dollar" { append numberFormat " \\\u0024" } "Euro" { append numberFormat " \\\u20AC" } "Pound" { append numberFormat " \\\u00A3" } "Yen" { append numberFormat " \\\u00A5" } "DM" { append numberFormat " \\D\\M" } default { append numberFormat " \\$currency" } } return $numberFormat }
GetDecimalSeparator [::Excel]Top, Main, Index
Return the decimal separator used by Excel.
Parameters
appId | Identifier of the Excel instance. |
Return value
Returns the decimal separator used by Excel.
See also
GetVersion, GetThousandsSeparator, GetListItemSeparator
proc ::Excel::GetDecimalSeparator {appId} { # Return the decimal separator used by Excel. # # appId - Identifier of the Excel instance. # # Returns the decimal separator used by Excel. # # See also: GetVersion GetThousandsSeparator GetListItemSeparator return [$appId DecimalSeparator] }
GetEnum [::Excel]Top, Main, Index
Get numeric value of an enumeration.
Parameters
enumOrString | Enumeration name |
Return value
Returns the numeric value of an enumeration.
See also
GetEnumName, GetEnumTypes, GetEnumVal, GetEnumNames
proc ::Excel::GetEnum {enumOrString} { # Get numeric value of an enumeration. # # enumOrString - Enumeration name # # Returns the numeric value of an enumeration. # # See also: GetEnumName GetEnumTypes GetEnumVal GetEnumNames set retVal [catch { expr int($enumOrString) } enumInt] if { $retVal == 0 } { return $enumInt } else { return [GetEnumVal $enumOrString] } }
GetEnumName [::Excel]Top, Main, Index
Get name of a given enumeration type and numeric value.
Parameters
enumType | Enumeration type |
enumVal | Enumeration numeric value. |
Return value
Returns the list of names of a given enumeration type.
See also
GetEnumNames, GetEnumTypes, GetEnumVal, GetEnum
proc ::Excel::GetEnumName {enumType enumVal} { # Get name of a given enumeration type and numeric value. # # enumType - Enumeration type # enumVal - Enumeration numeric value. # # Returns the list of names of a given enumeration type. # # See also: GetEnumNames GetEnumTypes GetEnumVal GetEnum variable enums set enumName "" if { [info exists enums($enumType)] } { foreach { key val } $enums($enumType) { if { $val eq $enumVal } { set enumName $key break } } } return $enumName }
GetEnumNames [::Excel]Top, Main, Index
Get names of a given enumeration type.
Parameters
enumType | Enumeration type |
Return value
Returns the list of names of a given enumeration type.
See also
GetEnumName, GetEnumTypes, GetEnumVal, GetEnum
proc ::Excel::GetEnumNames {enumType} { # Get names of a given enumeration type. # # enumType - Enumeration type # # Returns the list of names of a given enumeration type. # # See also: GetEnumName GetEnumTypes GetEnumVal GetEnum variable enums if { [info exists enums($enumType)] } { foreach { key val } $enums($enumType) { lappend nameList $key } return $nameList } else { return [list] } }
GetEnumTypes [::Excel]Top, Main, Index
Get available enumeration types.
Return value
Returns the list of available enumeration types.
See also
GetEnumName, GetEnumNames, GetEnumVal, GetEnum
proc ::Excel::GetEnumTypes {} { # Get available enumeration types. # # Returns the list of available enumeration types. # # See also: GetEnumName GetEnumNames GetEnumVal GetEnum variable enums return [lsort -dictionary [array names enums]] }
GetEnumVal [::Excel]Top, Main, Index
Get numeric value of an enumeration name.
Parameters
enumName | Enumeration name |
Return value
Returns the numeric value of an enumeration name.
See also
GetEnumName, GetEnumTypes, GetEnumNames, GetEnum
proc ::Excel::GetEnumVal {enumName} { # Get numeric value of an enumeration name. # # enumName - Enumeration name # # Returns the numeric value of an enumeration name. # # See also: GetEnumName GetEnumTypes GetEnumNames GetEnum variable enums foreach enumType [GetEnumTypes] { set ind [lsearch -exact $enums($enumType) $enumName] if { $ind >= 0 } { return [lindex $enums($enumType) [expr { $ind + 1 }]] } } return "" }
GetExtString [::Excel]Top, Main, Index
Return the default extension of an Excel file.
Parameters
appId | Identifier of the Excel instance. |
Description
Starting with Excel 12 (2007) this is the string .xlsx
. In previous versions it was .xls
.
Return value
Returns the default extension of an Excel file.
See also
proc ::Excel::GetExtString {appId} { # Return the default extension of an Excel file. # # appId - Identifier of the Excel instance. # # Starting with Excel 12 (2007) this is the string `.xlsx`. # In previous versions it was `.xls`. # # Returns the default extension of an Excel file. # # See also: ::Office::GetOfficeType # appId is only needed, so we are sure, that excelVersion is initialized. variable excelVersion if { $excelVersion >= 12.0 } { return ".xlsx" } else { return ".xls" } }
GetFirstUsedColumn [::Excel]Top, Main, Index
Return the index of the first used column of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the index of the first used column of a worksheet.
See also
GetNumColumns, GetNumUsedColumns, GetLastUsedColumn, GetNumUsedRows
proc ::Excel::GetFirstUsedColumn {worksheetId} { # Return the index of the first used column of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the index of the first used column of a worksheet. # # See also: GetNumColumns GetNumUsedColumns GetLastUsedColumn GetNumUsedRows return [$worksheetId -with { UsedRange } Column] }
GetFirstUsedRow [::Excel]Top, Main, Index
Return the index of the first used row of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the index of the first used row of a worksheet.
See also
GetNumRows, GetNumUsedRows, GetLastUsedRow, GetNumUsedColumns
proc ::Excel::GetFirstUsedRow {worksheetId} { # Return the index of the first used row of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the index of the first used row of a worksheet. # # See also: GetNumRows GetNumUsedRows GetLastUsedRow GetNumUsedColumns return [$worksheetId -with { UsedRange } Row] }
GetFloatSeparator [::Excel]Top, Main, Index
Obsolete: Replaced with GetDecimalSeparator in version 2.1.0
Description
Only valid, after a call of Open or OpenNew.
Note, that this procedure has been superseeded with GetDecimalSeparator in version 2.1.0. Only use it, if using an Excel version older than 2007.
See also
GetVersion, GetDecimalSeparator, GetThousandsSeparator
proc ::Excel::GetFloatSeparator {} { # Obsolete: Replaced with [GetDecimalSeparator] in version 2.1.0 # # Only valid, after a call of [Open] or [OpenNew]. # # Note, that this procedure has been superseeded with [GetDecimalSeparator] in version 2.1.0. # Only use it, if using an Excel version older than 2007. # # See also: GetVersion GetDecimalSeparator GetThousandsSeparator variable decimalSeparator return $decimalSeparator }
GetHiddenColumns [::Excel]Top, Main, Index
Return the hidden columns of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the hidden columns as a list of column numbers. If no columns are hidden, an empty list is returned. Column numbering starts with 1.
See also
HideColumn, GetHiddenRows, ColumnCharToInt
proc ::Excel::GetHiddenColumns {worksheetId} { # Return the hidden columns of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the hidden columns as a list of column numbers. # If no columns are hidden, an empty list is returned. # Column numbering starts with 1. # # See also: HideColumn GetHiddenRows ColumnCharToInt set numUsedCols [Excel GetNumUsedColumns $worksheetId] set hiddenList [list] for { set c 1 } { $c <= $numUsedCols } { incr c } { set cell [Excel SelectCellByIndex $worksheetId 1 $c] set isHidden [$cell -with { EntireColumn } Hidden] if { $isHidden } { lappend hiddenList $c } Cawt Destroy $cell } return $hiddenList }
GetHiddenRows [::Excel]Top, Main, Index
Return the hidden rows of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the hidden rows as a list of row numbers. If no rows are hidden, an empty list is returned. Row numbering starts with 1.
See also
HideRow, GetHiddenColumns, ColumnCharToInt
proc ::Excel::GetHiddenRows {worksheetId} { # Return the hidden rows of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the hidden rows as a list of row numbers. # If no rows are hidden, an empty list is returned. # Row numbering starts with 1. # # See also: HideRow GetHiddenColumns ColumnCharToInt set numUsedRows [Excel GetNumUsedRows $worksheetId] set hiddenList [list] for { set r 1 } { $r <= $numUsedRows } { incr r } { set cell [Excel SelectCellByIndex $worksheetId $r 1] set isHidden [$cell -with { EntireRow } Hidden] if { $isHidden } { lappend hiddenList $r } Cawt Destroy $cell } return $hiddenList }
GetLangNumberFormat [::Excel]Top, Main, Index
Obsolete: Replaced with GetNumberFormat in version 2.1.0
Parameters
pre | Number of digits before the decimal point. |
post | Number of digits after the decimal point. |
floatSep | Specify the floating point separator character. Optional, default "" . |
Description
The number of digits is specified as a string containing as many zeros as wanted digits. If no floating point separator is specified or the empty string, the floating point separator of Excel is used.
Example:
[GetLangNumberFormat "0" "0000"] will return the Excel format string to show floating point values with 4 digits after the decimal point.
See also
SetRangeFormat, GetNumberFormat
proc ::Excel::GetLangNumberFormat {pre post {floatSep {}}} { # Obsolete: Replaced with [GetNumberFormat] in version 2.1.0 # # pre - Number of digits before the decimal point. # post - Number of digits after the decimal point. # floatSep - Specify the floating point separator character. # # The number of digits is specified as a string containing as # many zeros as wanted digits. # If no floating point separator is specified or the empty string, the # floating point separator of Excel is used. # # Example: # [GetLangNumberFormat "0" "0000"] will return the Excel format string # to show floating point values with 4 digits after the decimal point. # # See also: SetRangeFormat GetNumberFormat if { $floatSep eq "" } { set floatSep [Excel GetFloatSeparator] } return [format "%s%s%s" $pre $floatSep $post] }
GetLastUsedColumn [::Excel]Top, Main, Index
Return the index of the last used column of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the index of the last used column of a worksheet.
See also
GetNumColumns, GetNumUsedColumns, GetFirstUsedColumn, GetNumUsedRows
proc ::Excel::GetLastUsedColumn {worksheetId} { # Return the index of the last used column of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the index of the last used column of a worksheet. # # See also: GetNumColumns GetNumUsedColumns GetFirstUsedColumn GetNumUsedRows return [expr { [Excel GetFirstUsedColumn $worksheetId] + [Excel GetNumUsedColumns $worksheetId] - 1 }] }
GetLastUsedRow [::Excel]Top, Main, Index
Return the index of the last used row of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the index of the last used row of a worksheet.
See also
GetNumRows, GetNumUsedRows, GetFirstUsedRow, GetNumUsedColumns
proc ::Excel::GetLastUsedRow {worksheetId} { # Return the index of the last used row of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the index of the last used row of a worksheet. # # See also: GetNumRows GetNumUsedRows GetFirstUsedRow GetNumUsedColumns return [expr { [Excel GetFirstUsedRow $worksheetId] + [Excel GetNumUsedRows $worksheetId] - 1 }] }
GetListItemSeparator [::Excel]Top, Main, Index
Return the list item separator used by Windows.
Return value
Returns the list item separator used by Windows and Excel. This is either the character returned by twapi::get_locale_info 0 -slist
or the character set by method SetListItemSeparator.
See also
GetVersion, SetListItemSeparator, CreateRangeString, GetDecimalSeparator, GetThousandsSeparator
proc ::Excel::GetListItemSeparator {} { # Return the list item separator used by Windows. # # Returns the list item separator used by Windows and Excel. # This is either the character returned by `twapi::get_locale_info 0 -slist` or # the character set by method [SetListItemSeparator]. # # See also: GetVersion SetListItemSeparator CreateRangeString # GetDecimalSeparator GetThousandsSeparator variable listItemSeparator if { $listItemSeparator eq "" } { return [lindex [twapi::get_locale_info 0 -slist] 1] } else { return $listItemSeparator } }
GetMatrixValues [::Excel]Top, Main, Index
Return worksheet table values as a matrix.
Parameters
worksheetId | Identifier of the worksheet. |
row1 | Row number of upper-left corner of the cell range. |
col1 | Column number of upper-left corner of the cell range. |
row2 | Row number of lower-right corner of the cell range. |
col2 | Column number of lower-right corner of the cell range. |
Return value
Returns the worksheet table values as a matrix.
See also
SetMatrixValues, GetRowValues, GetColumnValues
proc ::Excel::GetMatrixValues {worksheetId row1 col1 row2 col2} { # Return worksheet table values as a matrix. # # worksheetId - Identifier of the worksheet. # row1 - Row number of upper-left corner of the cell range. # col1 - Column number of upper-left corner of the cell range. # row2 - Row number of lower-right corner of the cell range. # col2 - Column number of lower-right corner of the cell range. # # Returns the worksheet table values as a matrix. # # See also: SetMatrixValues GetRowValues GetColumnValues set cellId [Excel SelectRangeByIndex $worksheetId $row1 $col1 $row2 $col2] set matrixList [Excel GetRangeValues $cellId] Cawt Destroy $cellId return $matrixList }
GetMaxColumns [::Excel]Top, Main, Index
Return the maximum number of columns of an Excel table.
Parameters
appId | Identifier of the Excel instance. |
Return value
Returns the maximum number of columns of an Excel table.
See also
proc ::Excel::GetMaxColumns {appId} { # Return the maximum number of columns of an Excel table. # # appId - Identifier of the Excel instance. # # Returns the maximum number of columns of an Excel table. # # See also: GetNumColumns # appId is only needed, so we are sure, that excelVersion is initialized. variable excelVersion if { $excelVersion < 12.0 } { return 256 } else { return 16384 } }
GetMaxRows [::Excel]Top, Main, Index
Return the maximum number of rows of an Excel table.
Parameters
appId | Identifier of the Excel instance. |
Return value
Returns the maximum number of rows of an Excel table.
See also
proc ::Excel::GetMaxRows {appId} { # Return the maximum number of rows of an Excel table. # # appId - Identifier of the Excel instance. # # Returns the maximum number of rows of an Excel table. # # See also: GetNumRows # appId is only needed, so we are sure, that excelVersion is initialized. variable excelVersion if { $excelVersion < 12.0 } { return 65536 } else { return 1048576 } }
GetNamedRange [::Excel]Top, Main, Index
Get the identifier of a named range.
Parameters
objId | Identifier of a workbook or worksheet. |
rangeName | Name of range to get. |
Return value
Returns the range identifier of the named range.
See also
SelectRangeByIndex, GetNamedRangeNames, SetNamedRange
proc ::Excel::GetNamedRange {objId rangeName} { # Get the identifier of a named range. # # objId - Identifier of a workbook or worksheet. # rangeName - Name of range to get. # # Returns the range identifier of the named range. # # See also: SelectRangeByIndex GetNamedRangeNames SetNamedRange set names [$objId Names] $names -iterate name { if { [string match "*$rangeName" [$name Name]] } { set rangeId [$name RefersToRange] Cawt Destroy $name return $rangeId } Cawt Destroy $name } error "Range name $rangeName not found." }
GetNamedRangeNames [::Excel]Top, Main, Index
Get the names of named ranges.
Parameters
objId | Identifier of a workbook or worksheet. |
Return value
Returns a sorted list of all names.
See also
proc ::Excel::GetNamedRangeNames {objId} { # Get the names of named ranges. # # objId - Identifier of a workbook or worksheet. # # Returns a sorted list of all names. # # See also: GetNamedRange SetNamedRange set nameList [list] set names [$objId Names] $names -iterate name { lappend nameList [$name Name] Cawt Destroy $name } Cawt Destroy $names return [lsort -dictionary $nameList] }
GetNumberFormat [::Excel]Top, Main, Index
Return an Excel number format string.
Parameters
appId | Identifier of the Excel instance. |
pre | Number of digits before the decimal point. |
post | Number of digits after the decimal point. |
floatSep | Specify the floating point separator character. Optional, default "" . |
Description
The number of digits is specified as a string containing as many zeros as wanted digits. If no floating point separator is specified or the empty string, the floating point separator of Excel is used.
Example:
[GetNumberFormat "0" "0000"] will return the Excel format string to show floating point values with 4 digits after the decimal point.
Return value
Returns the corresponding Excel number format string.
See also
SetRangeFormat, GetCurrencyFormat
proc ::Excel::GetNumberFormat {appId pre post {floatSep {}}} { # Return an Excel number format string. # # appId - Identifier of the Excel instance. # pre - Number of digits before the decimal point. # post - Number of digits after the decimal point. # floatSep - Specify the floating point separator character. # # The number of digits is specified as a string containing as # many zeros as wanted digits. # If no floating point separator is specified or the empty string, the # floating point separator of Excel is used. # # Example: # [GetNumberFormat "0" "0000"] will return the Excel format string # to show floating point values with 4 digits after the decimal point. # # Returns the corresponding Excel number format string. # # See also: SetRangeFormat GetCurrencyFormat if { $floatSep eq "" } { set floatSep [Excel GetDecimalSeparator $appId] } return [format "%s%s%s" $pre $floatSep $post] }
GetNumColumns [::Excel]Top, Main, Index
Return the number of columns of a cell range.
Parameters
rangeId | Identifier of a range, cells collection or a worksheet. |
Description
If specifying a $worksheetId
or $cellsId
, the maximum number of columns of a worksheet will be returned. The maximum number of columns is 256 for Excel versions before 2007. Since 2007 the maximum number of columns is 16.384.
Return value
Returns the number of columns of a cell range.
See also
GetMaxColumns, GetNumUsedColumns, GetFirstUsedColumn, GetLastUsedColumn, GetNumRows
proc ::Excel::GetNumColumns {rangeId} { # Return the number of columns of a cell range. # # rangeId - Identifier of a range, cells collection or a worksheet. # # If specifying a $worksheetId or $cellsId, the maximum number of columns # of a worksheet will be returned. # The maximum number of columns is 256 for Excel versions before 2007. # Since 2007 the maximum number of columns is 16.384. # # Returns the number of columns of a cell range. # # See also: GetMaxColumns GetNumUsedColumns GetFirstUsedColumn GetLastUsedColumn GetNumRows return [$rangeId -with { Columns } Count] }
GetNumRows [::Excel]Top, Main, Index
Return the number of rows of a cell range.
Parameters
rangeId | Identifier of a range, cells collection or a worksheet. |
Description
If specifying a worksheetId or cellsId, the maximum number of rows of a worksheet will be returned. The maximum number of rows is 65.536 for Excel versions before 2007. Since 2007 the maximum number of rows is 1.048.576.
Return value
Returns the number of rows of a cell range.
See also
GetMaxRows, GetNumUsedRows, GetFirstUsedRow, GetLastUsedRow, GetNumColumns
proc ::Excel::GetNumRows {rangeId} { # Return the number of rows of a cell range. # # rangeId - Identifier of a range, cells collection or a worksheet. # # If specifying a worksheetId or cellsId, the maximum number of rows # of a worksheet will be returned. # The maximum number of rows is 65.536 for Excel versions before 2007. # Since 2007 the maximum number of rows is 1.048.576. # # Returns the number of rows of a cell range. # # See also: GetMaxRows GetNumUsedRows GetFirstUsedRow GetLastUsedRow GetNumColumns return [$rangeId -with { Rows } Count] }
GetNumStyles [::Excel]Top, Main, Index
Return the number of styles in a workbook.
Parameters
workbookId | Identifier of the workbook. |
Return value
Returns the number of styles in the workbook.
See also
proc ::Excel::GetNumStyles {workbookId} { # Return the number of styles in a workbook. # # workbookId - Identifier of the workbook. # # Returns the number of styles in the workbook. # # See also: GetStyleId return [$workbookId -with { Styles } Count] }
GetNumUsedColumns [::Excel]Top, Main, Index
Return the number of used columns of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Description
Note, that this procedure returns 1, even if the worksheet is empty. Use IsWorksheetEmpty to determine, if a worksheet is totally empty.
Return value
Returns the number of used columns of a worksheet.
See also
GetNumColumns, GetFirstUsedColumn, GetLastUsedColumn, GetNumUsedRows
proc ::Excel::GetNumUsedColumns {worksheetId} { # Return the number of used columns of a worksheet. # # worksheetId - Identifier of the worksheet. # # Note, that this procedure returns 1, even if the worksheet is empty. # Use [IsWorksheetEmpty] to determine, if a worksheet is totally empty. # # Returns the number of used columns of a worksheet. # # See also: GetNumColumns GetFirstUsedColumn GetLastUsedColumn GetNumUsedRows return [$worksheetId -with { UsedRange Columns } Count] }
GetNumUsedRows [::Excel]Top, Main, Index
Return the number of used rows of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Description
Note, that this procedure returns 1, even if the worksheet is empty. Use IsWorksheetEmpty to determine, if a worksheet is totally empty.
Return value
Returns the number of used rows of a worksheet.
See also
GetNumRows, GetFirstUsedRow, GetLastUsedRow, GetNumUsedColumns
proc ::Excel::GetNumUsedRows {worksheetId} { # Return the number of used rows of a worksheet. # # worksheetId - Identifier of the worksheet. # # Note, that this procedure returns 1, even if the worksheet is empty. # Use IsWorksheetEmpty to determine, if a worksheet is totally empty. # # Returns the number of used rows of a worksheet. # # See also: GetNumRows GetFirstUsedRow GetLastUsedRow GetNumUsedColumns return [$worksheetId -with { UsedRange Rows } Count] }
GetNumWorksheets [::Excel]Top, Main, Index
Return the number of worksheets in a workbook.
Parameters
workbookId | Identifier of the workbook. |
Return value
Returns the number of worksheets in the workbook.
See also
proc ::Excel::GetNumWorksheets {workbookId} { # Return the number of worksheets in a workbook. # # workbookId - Identifier of the workbook. # # Returns the number of worksheets in the workbook. # # See also: AddWorksheet OpenWorkbook return [$workbookId -with { Worksheets } Count] }
GetRangeAsIndex [::Excel]Top, Main, Index
Get address of a cell range as list of row/column indices.
Parameters
rangeId | Identifier of the cell range. |
Description
If the range represents a single cell, the list consists of 2 elements, representing the row and column index of the cell.
If the range represents more than one cell, the list consists of 4 elements. The first two elements represent the row and column indices of the top-left cell of the range. The last two elements represent the row and column indices of the bottom-right cell of the range.
Return value
Returns address of a cell range as a 2 or 4 element list of integers:
See also
SelectRangeByIndex, GetCellRange
proc ::Excel::GetRangeAsIndex {rangeId} { # Get address of a cell range as list of row/column indices. # # rangeId - Identifier of the cell range. # # Returns address of a cell range as a 2 or 4 element list of integers: # # If the range represents a single cell, the list consists of 2 elements, # representing the row and column index of the cell. # # If the range represents more than one cell, the list consists of 4 elements. # The first two elements represent the row and column indices of the top-left cell of the range. # The last two elements represent the row and column indices of the bottom-right cell of the range. # # See also: SelectRangeByIndex GetCellRange set rangeStr [Excel GetRangeAsString $rangeId] if { [string first ":" $rangeStr] > 0 } { regexp {([[:alpha:]]+)([[:digit:]]+):([[:alpha:]]+)([[:digit:]]+)} $rangeStr -> colStr1 row1 colStr2 row2 set col1 [Excel ColumnCharToInt $colStr1] set col2 [Excel ColumnCharToInt $colStr2] return [list $row1 $col1 $row2 $col2] } else { regexp {([[:alpha:]]+)([[:digit:]]+)} $rangeStr -> colStr row set col [Excel ColumnCharToInt $colStr] return [list $row $col] } }
GetRangeAsString [::Excel]Top, Main, Index
Get address of a cell range as Excel range string in A1 notation.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns address of a cell range as Excel range string in A1 notation.
See also
SelectRangeByString, GetCellRange
proc ::Excel::GetRangeAsString {rangeId} { # Get address of a cell range as Excel range string in A1 notation. # # rangeId - Identifier of the cell range. # # Returns address of a cell range as Excel range string in A1 notation. # # See also: SelectRangeByString GetCellRange set rangeStr [string map { "$" "" } [$rangeId Address]] return $rangeStr }
GetRangeCharacters [::Excel]Top, Main, Index
Return characters of a cell range.
Parameters
rangeId | Identifier of the cell range. |
start | Start of the character range. Optional, default 1 . |
length | The number of characters after start. Optional, default -1 . |
Return value
Returns all or a range of characters of a cell range. If no optional parameters are specified, all characters of the cell range are returned.
See also
SelectRangeByIndex, SelectRangeByString
proc ::Excel::GetRangeCharacters {rangeId {start 1} {length -1}} { # Return characters of a cell range. # # rangeId - Identifier of the cell range. # start - Start of the character range. # length - The number of characters after start. # # Returns all or a range of characters of a cell range. # If no optional parameters are specified, all characters of the cell range are # returned. # # See also: SelectRangeByIndex SelectRangeByString if { $length < 0 } { return [$rangeId Characters $start] } else { return [$rangeId Characters $start $length] } }
GetRangeFillColor [::Excel]Top, Main, Index
Get the fill color of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the fill color as a list of r, b and b values. The values are returned as integers in the range [0, 255].
See also
SetRangeFillColor, ::Cawt::OfficeColorToRgb, SelectRangeByIndex, SelectRangeByString
proc ::Excel::GetRangeFillColor {rangeId} { # Get the fill color of a cell range. # # rangeId - Identifier of the cell range. # # Returns the fill color as a list of r, b and b values. # The values are returned as integers in the range \[0, 255\]. # # See also: SetRangeFillColor ::Cawt::OfficeColorToRgb SelectRangeByIndex SelectRangeByString set colorNum [$rangeId -with { Interior } Color] return [Cawt OfficeColorToRgb $colorNum] }
GetRangeFontAttributes [::Excel]Top, Main, Index
Get the font attibutes of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
args | Options described below. |
-bold | Boolean. |
-fontstyle | Font stye as string. |
-italic | Boolean. |
-name | Font name as string. |
-outlinefont | Boolean. |
-shadow | Boolean. |
-size | Font size in points. |
-strikethrough | Boolean. |
-subscript | Boolean. |
-superscript | Boolean. |
-themecolor | Enumeration of type Enum::XlThemeColor. |
-themefont | Enumeration of type Enum::XlThemeFont. |
-tintandshade | Floating point number from -1 (darkest) to 1 (lightest). Zero is neutral. |
-underline | Enumeration of type Enum::XlUnderlineStyle |
Description
Example:
lassign [GetRangeFontAttributes $rangeId -name -size] name size returns the font name and the font size.
Return value
Returns the specified font attributes as a list.
See also
SetRangeFontAttributes, SelectRangeByIndex, GetRangeFontBold, GetRangeFontItalic, GetRangeFontName, GetRangeFontSize, GetRangeFontSubscript, GetRangeFontSuperscript, GetRangeFontUnderline
proc ::Excel::GetRangeFontAttributes {rangeId args} { # Get the font attibutes of a cell or character range. # # rangeId - Identifier of the cell range. # args - Options described below. # # -bold - Boolean. # -fontstyle - Font stye as string. # -italic - Boolean. # -name - Font name as string. # -outlinefont - Boolean. # -size - Font size in points. # -shadow - Boolean. # -strikethrough - Boolean. # -subscript - Boolean. # -superscript - Boolean. # -underline - Enumeration of type [Enum::XlUnderlineStyle] # -themecolor - Enumeration of type [Enum::XlThemeColor]. # -themefont - Enumeration of type [Enum::XlThemeFont]. # -tintandshade - Floating point number from -1 (darkest) to 1 (lightest). Zero is neutral. # # Example: # lassign [GetRangeFontAttributes $rangeId -name -size] name size # returns the font name and the font size. # # Returns the specified font attributes as a list. # # See also: SetRangeFontAttributes SelectRangeByIndex # GetRangeFontBold GetRangeFontItalic GetRangeFontName GetRangeFontSize # GetRangeFontSubscript GetRangeFontSuperscript GetRangeFontUnderline set fontId [$rangeId Font] set valList [list] foreach key $args { switch -exact -nocase -- $key { "-bold" { lappend valList [$fontId Bold] } "-fontstyle" { lappend valList [$fontId FontStyle] } "-italic" { lappend valList [$fontId Italic] } "-name" { lappend valList [$fontId Name] } "-outlinefont" { lappend valList [$fontId OutlineFont] } "-size" { lappend valList [$fontId Size] } "-shadow" { lappend valList [$fontId Shadow] } "-strikethrough" { lappend valList [$fontId Strikethrough] } "-subscript" { lappend valList [$fontId Subscript] } "-superscript" { lappend valList [$fontId Superscript] } "-underline" { lappend valList [$fontId Underline] } "-themecolor" { lappend valList [$fontId ThemeColor] } "-themefont" { lappend valList [$fontId ThemeFont] } "-tintandshade" { lappend valList [$fontId TintAndShade] } default { error "GetRangeFontAttributes: Unknown key \"$key\" specified" } } } Cawt Destroy $fontId return $valList }
GetRangeFontBold [::Excel]Top, Main, Index
Get the bold font style of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns true, if the font in specified cell range has the bold flag set.
See also
SetRangeFontBold, SelectRangeByIndex, GetRangeFontAttributes
proc ::Excel::GetRangeFontBold {rangeId} { # Get the bold font style of a cell range. # # rangeId - Identifier of the cell range. # # Returns true, if the font in specified cell range has the bold flag set. # # See also: SetRangeFontBold SelectRangeByIndex GetRangeFontAttributes return [$rangeId -with { Font } Bold] }
GetRangeFontItalic [::Excel]Top, Main, Index
Get the italic font style of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns true, if the font in specified cell range has the italic flag set.
See also
SetRangeFontItalic, SelectRangeByIndex, GetRangeFontAttributes
proc ::Excel::GetRangeFontItalic {rangeId} { # Get the italic font style of a cell range. # # rangeId - Identifier of the cell range. # # Returns true, if the font in specified cell range has the italic flag set. # # See also: SetRangeFontItalic SelectRangeByIndex GetRangeFontAttributes return [$rangeId -with { Font } Italic] }
GetRangeFontName [::Excel]Top, Main, Index
Get the font name of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the font name in specified cell range as a string.
See also
SetRangeFontName, SelectRangeByIndex, GetRangeFontAttributes
proc ::Excel::GetRangeFontName {rangeId} { # Get the font name of a cell or character range. # # rangeId - Identifier of the cell range. # # Returns the font name in specified cell range as a string. # # See also: SetRangeFontName SelectRangeByIndex GetRangeFontAttributes return [$rangeId -with { Font } Name] }
GetRangeFontSize [::Excel]Top, Main, Index
Get the font size of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the size of the font in specified cell range measured in points.
See also
SetRangeFontSize, SelectRangeByIndex, GetRangeFontAttributes
proc ::Excel::GetRangeFontSize {rangeId} { # Get the font size of a cell range. # # rangeId - Identifier of the cell range. # # Returns the size of the font in specified cell range measured in points. # # See also: SetRangeFontSize SelectRangeByIndex GetRangeFontAttributes return [$rangeId -with { Font } Size] }
GetRangeFontSubscript [::Excel]Top, Main, Index
Get the subscript font style of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns true, if the font in specified cell range has the subscript flag set.
See also
SetRangeFontSubscript, SelectRangeByIndex, GetRangeFontAttributes
proc ::Excel::GetRangeFontSubscript {rangeId} { # Get the subscript font style of a cell or character range. # # rangeId - Identifier of the cell range. # # Returns true, if the font in specified cell range has the subscript flag set. # # See also: SetRangeFontSubscript SelectRangeByIndex GetRangeFontAttributes return [$rangeId -with { Font } Subscript] }
GetRangeFontSuperscript [::Excel]Top, Main, Index
Get the superscript font style of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns true, if the font in specified cell range has the superscript flag set.
See also
SetRangeFontSuperscript, SelectRangeByIndex, GetRangeFontAttributes
proc ::Excel::GetRangeFontSuperscript {rangeId} { # Get the superscript font style of a cell or character range. # # rangeId - Identifier of the cell range. # # Returns true, if the font in specified cell range has the superscript flag set. # # See also: SetRangeFontSuperscript SelectRangeByIndex GetRangeFontAttributes return [$rangeId -with { Font } Superscript] }
GetRangeFontUnderline [::Excel]Top, Main, Index
Get the underline font style of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the underline style of specified cell range. The returned value is of enumeration type Enum::XlUnderlineStyle.
See also
SetRangeFontUnderline, SelectRangeByIndex, GetRangeFontAttributes
proc ::Excel::GetRangeFontUnderline {rangeId} { # Get the underline font style of a cell range. # # rangeId - Identifier of the cell range. # # Returns the underline style of specified cell range. # The returned value is of enumeration type [Enum::XlUnderlineStyle]. # # See also: SetRangeFontUnderline SelectRangeByIndex GetRangeFontAttributes return [$rangeId -with { Font } Underline] }
GetRangeFormat [::Excel]Top, Main, Index
Get the number format of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the number format in Excel style.
See also
SetRangeFormat, SelectRangeByIndex, SelectRangeByString
proc ::Excel::GetRangeFormat {rangeId} { # Get the number format of a cell range. # # rangeId - Identifier of the cell range. # # Returns the number format in Excel style. # # See also: SetRangeFormat SelectRangeByIndex SelectRangeByString return [$rangeId NumberFormat] }
GetRangeHorizontalAlignment [::Excel]Top, Main, Index
Get the horizontal alignment of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the horizontal alignment as a value of enumeration type Enum::XlHAlign.
See also
SetRangeHorizontalAlignment, SelectRangeByIndex, SelectRangeByString
proc ::Excel::GetRangeHorizontalAlignment {rangeId} { # Get the horizontal alignment of a cell range. # # rangeId - Identifier of the cell range. # # Returns the horizontal alignment as a value of enumeration type [Enum::XlHAlign]. # # See also: SetRangeHorizontalAlignment SelectRangeByIndex SelectRangeByString return [$rangeId HorizontalAlignment] }
GetRangeTextColor [::Excel]Top, Main, Index
Get the text color of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Description
The r, g and b values are returned as integers in the range [0, 255].
Return value
Returns the text color as a list of r, b and b values.
See also
SetRangeTextColor, ::Cawt::OfficeColorToRgb, SelectRangeByIndex, SelectRangeByString
proc ::Excel::GetRangeTextColor {rangeId} { # Get the text color of a cell range. # # rangeId - Identifier of the cell range. # # The r, g and b values are returned as integers in the # range \[0, 255\]. # # Returns the text color as a list of r, b and b values. # # See also: SetRangeTextColor ::Cawt::OfficeColorToRgb SelectRangeByIndex SelectRangeByString set colorNum [$rangeId -with { Font } Color] return [Cawt OfficeColorToRgb $colorNum] }
GetRangeValues [::Excel]Top, Main, Index
Return range values as a matrix.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the range values as a matrix.
See also
SetRangeValues, GetMatrixValues, GetRowValues, GetColumnValues, GetCellValue
proc ::Excel::GetRangeValues {rangeId} { # Return range values as a matrix. # # rangeId - Identifier of the cell range. # # Returns the range values as a matrix. # # See also: SetRangeValues GetMatrixValues GetRowValues GetColumnValues GetCellValue return [$rangeId Value2] }
GetRangeVerticalAlignment [::Excel]Top, Main, Index
Get the vertical alignment of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns the vertical alignment as a value of enumeration type Enum::XlVAlign.
See also
SetRangeVerticalAlignment, SelectRangeByIndex, SelectRangeByString
proc ::Excel::GetRangeVerticalAlignment {rangeId} { # Get the vertical alignment of a cell range. # # rangeId - Identifier of the cell range. # # Returns the vertical alignment as a value of enumeration type [Enum::XlVAlign]. # # See also: SetRangeVerticalAlignment SelectRangeByIndex SelectRangeByString return [$rangeId VerticalAlignment] }
GetRangeWrapText [::Excel]Top, Main, Index
Get the wrap text mode of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns true, if the specified cell range has the wrap text flag set.
See also
SetRangeWrapText, GetRangeHorizontalAlignment, GetRangeTextColor, SelectRangeByIndex
proc ::Excel::GetRangeWrapText {rangeId} { # Get the wrap text mode of a cell range. # # rangeId - Identifier of the cell range. # # Returns true, if the specified cell range has the wrap text flag set. # # See also: SetRangeWrapText GetRangeHorizontalAlignment GetRangeTextColor SelectRangeByIndex return [$rangeId WrapText] }
GetRowValues [::Excel]Top, Main, Index
Return row values as a Tcl list.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
startCol | Column number of start. Column numbering starts with 1. If negative or zero, start at first available column. Optional, default 0 . |
numVals | If negative or zero, all available row values are returned. If positive, only $numVals values of the row are returned. Optional, default 0 . |
Description
Note, that the functionality of this procedure has changed slightly with CAWT versions greater than 1.0.5: If $startCol
is not specified, $startCol
is not set to 1, but it is set to the first available row. Possible incompatibility.
Return value
Returns the values of the specified row or row range as a Tcl list.
See also
SetRowValues, GetColumnValues, GetCellValue, ColumnCharToInt, GetFirstUsedColumn
proc ::Excel::GetRowValues {worksheetId row {startCol 0} {numVals 0}} { # Return row values as a Tcl list. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # startCol - Column number of start. Column numbering starts with 1. # If negative or zero, start at first available column. # numVals - If negative or zero, all available row values are returned. # If positive, only $numVals values of the row are returned. # # Note, that the functionality of this procedure has changed slightly with # CAWT versions greater than 1.0.5: # If $startCol is not specified, $startCol is not set to 1, but it is set to # the first available row. # Possible incompatibility. # # Returns the values of the specified row or row range as a Tcl list. # # See also: SetRowValues GetColumnValues GetCellValue ColumnCharToInt GetFirstUsedColumn if { $startCol <= 0 } { set startCol [Excel GetFirstUsedColumn $worksheetId] } if { $numVals <= 0 } { set numVals [expr { $startCol + [Excel GetLastUsedColumn $worksheetId] - 1 }] } set valList [list] set col $startCol set ind 0 while { $ind < $numVals } { lappend valList [Excel GetCellValue $worksheetId $row $col] incr ind incr col } # Remove empty cell values from the end of the values list. incr ind -1 while { $ind >= 0 && [lindex $valList $ind] eq "" } { incr ind -1 } return [lrange $valList 0 $ind] }
GetStyleId [::Excel]Top, Main, Index
Find a style by its index or name.
Parameters
workbookId | Identifier of the workbook. |
indexOrName | Index or name of the style to find. |
Description
Indices start at 1. If the index is out of bounds or a style with given name is not available, an error is thrown.
For details on style properties see the official Microsoft documentation
Return value
Returns the identifier of the found style.
See also
proc ::Excel::GetStyleId {workbookId indexOrName} { # Find a style by its index or name. # # workbookId - Identifier of the workbook. # indexOrName - Index or name of the style to find. # # Indices start at 1. # If the index is out of bounds or a style with given name is # not available, an error is thrown. # # For details on style properties see the official [Microsoft documentation] # (https://docs.microsoft.com/en-us/office/vba/api/excel.style) # # Returns the identifier of the found style. # # See also: GetNumStyles if { [string is integer $indexOrName] } { set count [Excel GetNumStyles $workbookId] if { $indexOrName < 1 || $indexOrName > $count } { error "GetStyleId: Invalid style index $indexOrName given." } set styleId [$workbookId -with { Styles } Item [expr int($indexOrName)]] } else { set retVal [catch {$workbookId -with { Styles } Item [Cawt TclString $indexOrName]} styleId] if { $retVal != 0 } { error "GetStyleId: Invalid style name $indexOrName" } } return $styleId }
GetTablelistHeader [::Excel]Top, Main, Index
Return the header line of a tablelist as a list.
Parameters
tableId | Identifier of the tablelist. |
Return value
Returns the header line of the tablelist as a list.
See also
TablelistToWorksheet, WorksheetToTablelist, SetTablelistHeader, GetTablelistValues
proc ::Excel::GetTablelistHeader {tableId} { # Return the header line of a tablelist as a list. # # tableId - Identifier of the tablelist. # # Returns the header line of the tablelist as a list. # # See also: TablelistToWorksheet WorksheetToTablelist # SetTablelistHeader GetTablelistValues set numCols [$tableId columncount] for { set col 0 } { $col < $numCols } { incr col } { lappend headerList [$tableId columncget $col -title] } return $headerList }
GetTablelistValues [::Excel]Top, Main, Index
Return the values of a tablelist as a matrix.
Parameters
tableId | Identifier of the tablelist. |
Return value
Returns the values of the tablelist as a matrix.
See also
TablelistToWorksheet, WorksheetToTablelist, SetTablelistValues, GetTablelistHeader
proc ::Excel::GetTablelistValues {tableId} { # Return the values of a tablelist as a matrix. # # tableId - Identifier of the tablelist. # # Returns the values of the tablelist as a matrix. # # See also: TablelistToWorksheet WorksheetToTablelist # SetTablelistValues GetTablelistHeader return [$tableId get 0 end] }
GetThousandsSeparator [::Excel]Top, Main, Index
Return the thousands separator used by Excel.
Parameters
appId | Identifier of the Excel instance. |
Return value
Returns the thousands separator used by Excel.
See also
GetVersion, GetDecimalSeparator, GetListItemSeparator
proc ::Excel::GetThousandsSeparator {appId} { # Return the thousands separator used by Excel. # # appId - Identifier of the Excel instance. # # Returns the thousands separator used by Excel. # # See also: GetVersion GetDecimalSeparator GetListItemSeparator return [$appId ThousandsSeparator] }
GetVersion [::Excel]Top, Main, Index
Return the version of an Excel application.
Parameters
objId | Identifier of an Excel object instance. |
useString | If set to true, return the version name (ex. Excel 2000 ). Otherwise return the version number (ex. 9.0 ). Optional, default false . |
Description
Both version name and version number are returned as strings. Version number is in a format, so that it can be evaluated as a floating point number.
Return value
Returns the version of an Excel application.
See also
GetDecimalSeparator, GetExtString
proc ::Excel::GetVersion {objId {useString false}} { # Return the version of an Excel application. # # objId - Identifier of an Excel object instance. # useString - If set to true, return the version name (ex. `Excel 2000`). # Otherwise return the version number (ex. `9.0`). # # Both version name and version number are returned as strings. # Version number is in a format, so that it can be evaluated as a # floating point number. # # Returns the version of an Excel application. # # See also: GetDecimalSeparator GetExtString array set map { "8.0" "Excel 97" "9.0" "Excel 2000" "10.0" "Excel 2002" "11.0" "Excel 2003" "12.0" "Excel 2007" "14.0" "Excel 2010" "15.0" "Excel 2013" "16.0" "Excel 2016/2019" } set version [Office GetApplicationVersion $objId] if { $useString } { if { [info exists map($version)] } { return $map($version) } else { return "Unknown Excel version" } } else { return $version } return $version }
GetWorkbookIdByName [::Excel]Top, Main, Index
Find an open workbook by its name.
Parameters
appId | Identifier of the Excel instance. |
workbookName | Name of the workbook to find. |
Return value
Returns the identifier of the found workbook. If a workbook with given name does not exist an error is thrown.
See also
OpenWorkbook, GetActiveWorkbook, GetWorkbookName, GetWorksheetIdByName
proc ::Excel::GetWorkbookIdByName {appId workbookName} { # Find an open workbook by its name. # # appId - Identifier of the Excel instance. # workbookName - Name of the workbook to find. # # Returns the identifier of the found workbook. # If a workbook with given name does not exist an error is thrown. # # See also: OpenWorkbook GetActiveWorkbook GetWorkbookName GetWorksheetIdByName set workbooks [$appId Workbooks] set shortName [file tail $workbookName] $workbooks -iterate workbookId { if { [$workbookId Name] eq $shortName } { Cawt Destroy $workbooks return $workbookId } } Cawt Destroy $workbooks error "GetWorkbookIdByName: No open workbook with name $shortName" }
GetWorkbookName [::Excel]Top, Main, Index
Return the name of a workbook.
Parameters
workbookId | Identifier of the workbook. |
Return value
Returns the name of the workbook.
See also
proc ::Excel::GetWorkbookName {workbookId} { # Return the name of a workbook. # # workbookId - Identifier of the workbook. # # Returns the name of the workbook. # # See also: AddWorkbook return [$workbookId Name] }
GetWorksheetAsMatrix [::Excel]Top, Main, Index
Return worksheet table as a matrix.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the range of the worksheet with valid data as a matrix.
See also
SetMatrixValues, GetMatrixValues, GetFirstUsedRow, GetLastUsedRow
proc ::Excel::GetWorksheetAsMatrix {worksheetId} { # Return worksheet table as a matrix. # # worksheetId - Identifier of the worksheet. # # Returns the range of the worksheet with valid data as # a matrix. # # See also: SetMatrixValues GetMatrixValues GetFirstUsedRow GetLastUsedRow return [Excel GetMatrixValues $worksheetId [Excel GetFirstUsedRow $worksheetId] [Excel GetFirstUsedColumn $worksheetId] [Excel GetLastUsedRow $worksheetId] [Excel GetLastUsedColumn $worksheetId]] }
GetWorksheetIdByIndex [::Excel]Top, Main, Index
Find a worksheet by its index.
Parameters
workbookId | Identifier of the workbook containing the worksheet. |
index | Index of the worksheet to find. |
activate | If set to true, activate the found worksheet. Otherwise just return the identifier. Optional, default true . |
Description
The left-most worksheet has index 1. Instead of using the numeric index the special word end
may be used to specify the last worksheet. If the index is out of bounds an error is thrown.
Return value
Returns the identifier of the found worksheet.
See also
GetNumWorksheets, GetWorksheetIdByName, AddWorksheet
proc ::Excel::GetWorksheetIdByIndex {workbookId index {activate true}} { # Find a worksheet by its index. # # workbookId - Identifier of the workbook containing the worksheet. # index - Index of the worksheet to find. # activate - If set to true, activate the found worksheet. # Otherwise just return the identifier. # # The left-most worksheet has index 1. # Instead of using the numeric index the special word `end` may # be used to specify the last worksheet. # If the index is out of bounds an error is thrown. # # Returns the identifier of the found worksheet. # # See also: GetNumWorksheets GetWorksheetIdByName AddWorksheet set count [Excel GetNumWorksheets $workbookId] if { $index eq "end" } { set index $count } else { if { $index < 1 || $index > $count } { error "GetWorksheetIdByIndex: Invalid index $index given." } } set worksheetId [$workbookId -with { Worksheets } Item [expr $index]] if { $activate } { $worksheetId Activate } return $worksheetId }
GetWorksheetIdByName [::Excel]Top, Main, Index
Find a worksheet by its name.
Parameters
workbookId | Identifier of the workbook containing the worksheet. |
worksheetName | Name of the worksheet to find. |
activate | If set to true, activate the found worksheet. Otherwise just return the identifier. Optional, default true . |
Return value
Returns the identifier of the found worksheet. If a worksheet with given name does not exist an error is thrown.
See also
GetNumWorksheets, GetWorksheetIndexByName, GetWorksheetIdByIndex, AddWorksheet, GetWorkbookIdByName
proc ::Excel::GetWorksheetIdByName {workbookId worksheetName {activate true}} { # Find a worksheet by its name. # # workbookId - Identifier of the workbook containing the worksheet. # worksheetName - Name of the worksheet to find. # activate - If set to true, activate the found worksheet. # Otherwise just return the identifier. # # Returns the identifier of the found worksheet. # If a worksheet with given name does not exist an error is thrown. # # See also: GetNumWorksheets GetWorksheetIndexByName GetWorksheetIdByIndex AddWorksheet # GetWorkbookIdByName set worksheets [$workbookId Worksheets] set count [$worksheets Count] for { set i 1 } { $i <= $count } { incr i } { set worksheetId [$worksheets Item [expr $i]] if { $worksheetName eq [$worksheetId Name] } { Cawt Destroy $worksheets if { $activate } { $worksheetId Activate } return $worksheetId } Cawt Destroy $worksheetId } error "GetWorksheetIdByName: No worksheet with name $worksheetName" }
GetWorksheetIndexByName [::Excel]Top, Main, Index
Find a worksheet index by its name.
Parameters
workbookId | Identifier of the workbook containing the worksheet. |
worksheetName | Name of the worksheet to find. |
activate | If set to true, activate the found worksheet. Otherwise just return the index. Optional, default true . |
Description
The left-most worksheet has index 1. If a worksheet with given name does not exist an error is thrown.
Return value
Returns the index of the found worksheet.
See also
GetNumWorksheets, GetWorksheetIdByIndex, GetWorksheetIdByName, AddWorksheet
proc ::Excel::GetWorksheetIndexByName {workbookId worksheetName {activate true}} { # Find a worksheet index by its name. # # workbookId - Identifier of the workbook containing the worksheet. # worksheetName - Name of the worksheet to find. # activate - If set to true, activate the found worksheet. # Otherwise just return the index. # # The left-most worksheet has index 1. # If a worksheet with given name does not exist an error is thrown. # # Returns the index of the found worksheet. # # See also: GetNumWorksheets GetWorksheetIdByIndex GetWorksheetIdByName AddWorksheet set worksheets [$workbookId Worksheets] set count [$worksheets Count] for { set i 1 } { $i <= $count } { incr i } { set worksheetId [$worksheets Item [expr $i]] if { $worksheetName eq [$worksheetId Name] } { Cawt Destroy $worksheets if { $activate } { $worksheetId Activate } return $i } Cawt Destroy $worksheetId } error "GetWorksheetIdByName: No worksheet with name $worksheetName" }
GetWorksheetName [::Excel]Top, Main, Index
Return the name of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the name of the worksheet.
See also
SetWorksheetName, AddWorksheet
proc ::Excel::GetWorksheetName {worksheetId} { # Return the name of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the name of the worksheet. # # See also: SetWorksheetName AddWorksheet return [$worksheetId Name] }
HideColumn [::Excel]Top, Main, Index
Hide or unhide a column.
Parameters
worksheetId | Identifier of the worksheet. |
col | Column number. Column numbering starts with 1. |
hide | If set to true, the specified column is hidden, otherwise it is shown. Optional, default true . |
Return value
Returns no value.
See also
InsertColumn, DeleteColumn, DuplicateColumn, GetHiddenColumns, HideRow
proc ::Excel::HideColumn {worksheetId col {hide true}} { # Hide or unhide a column. # # worksheetId - Identifier of the worksheet. # col - Column number. Column numbering starts with 1. # hide - If set to true, the specified column is hidden, # otherwise it is shown. # # Returns no value. # # See also: InsertColumn DeleteColumn DuplicateColumn GetHiddenColumns HideRow set cell [Excel SelectCellByIndex $worksheetId 1 $col] $cell -with { EntireColumn } Hidden [Cawt TclBool $hide] Cawt Destroy $cell }
HideRow [::Excel]Top, Main, Index
Hide or unhide a row.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
hide | If set to true, the specified row is hidden, otherwise it is shown. Optional, default true . |
Return value
Returns no value.
See also
InsertRow, DeleteRow, DuplicateRow, GetHiddenRows, HideColumn
proc ::Excel::HideRow {worksheetId row {hide true}} { # Hide or unhide a row. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # hide - If set to true, the specified row is hidden, # otherwise it is shown. # # Returns no value. # # See also: InsertRow DeleteRow DuplicateRow GetHiddenRows HideColumn set cell [Excel SelectCellByIndex $worksheetId $row 1] $cell -with { EntireRow } Hidden [Cawt TclBool $hide] Cawt Destroy $cell }
ImgToWorksheet [::Excel]Top, Main, Index
Put a photo image into a worksheet.
Parameters
phImg | The photo image identifier. |
worksheetId | Identifier of the worksheet. |
row | Row number of the top-left corner of the image. Row numbering starts with 1. Optional, default 1 . |
col | Column number of the top-left corner of the image. Column numbering starts with 1. Optional, default 1 . |
rowHeight | Row height. Optional, default 9 . |
colWidth | Column width in average-size characters of the widget's font. Optional, default 1 . |
Description
The height value may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
Note: Use only with small images.
Return value
Returns no value.
See also
WorksheetToImg, UseImgTransparency, ::Cawt::ImgToClipboard, RawImageFileToWorksheet, SetRowHeight, SetColumnWidth
proc ::Excel::ImgToWorksheet {phImg worksheetId {row 1} {col 1} {rowHeight 9} {colWidth 1}} { # Put a photo image into a worksheet. # # phImg - The photo image identifier. # worksheetId - Identifier of the worksheet. # row - Row number of the top-left corner of the image. Row numbering starts with 1. # col - Column number of the top-left corner of the image. Column numbering starts with 1. # rowHeight - Row height. # colWidth - Column width in average-size characters of the widget's font. # # The height value may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # # **Note:** Use only with small images. # # Returns no value. # # See also: WorksheetToImg UseImgTransparency ::Cawt::ImgToClipboard # RawImageFileToWorksheet SetRowHeight SetColumnWidth variable sUseTransparency set w [image width $phImg] set h [image height $phImg] Excel SetRowsHeight $worksheetId $row [expr {$row + $h -1}] $rowHeight Excel SetColumnsWidth $worksheetId $col [expr {$col + $w -1}] $colWidth set curRow $row for { set y 0 } { $y < $h } { incr y } { set curCol $col for { set x 0 } { $x < $w } { incr x } { set rangeId [Excel SelectCellByIndex $worksheetId $curRow $curCol] if { $sUseTransparency } { if { [$phImg transparency get $x $y] } { $rangeId -with { Interior } Pattern $::Excel::xlNone } else { set rgb [$phImg get $x $y] lassign $rgb r g b Excel SetRangeFillColor $rangeId $r $g $b } } else { set rgb [$phImg get $x $y] lassign $rgb r g b Excel SetRangeFillColor $rangeId $r $g $b } incr curCol Cawt Destroy $rangeId } incr curRow } }
Import [::Excel]Top, Main, Index
Import data from an external data source.
Parameters
rangeId | Identifier of the cell range. |
fileName | File name of the data source. |
args | Options described below. |
-decimalseparator <char> | Decimal separator character. |
-delimiter <char> | Delimiter character. Possible values: "\t" " " ";" "," . |
-thousandsseparator <char> | Thousands separator character. |
Return value
Returns no value.
See also
proc ::Excel::Import {rangeId fileName args} { # Import data from an external data source. # # rangeId - Identifier of the cell range. # fileName - File name of the data source. # args - Options described below. # # -delimiter <char> - Delimiter character. Possible values: `"\t" " " ";" ","`. # -decimalseparator <char> - Decimal separator character. # -thousandsseparator <char> - Thousands separator character. # # Returns no value. # # See also: OpenWorkbook SaveAsCsv set worksheetId [$rangeId Worksheet] set queryTableId [$worksheetId -with { QueryTables } Add "TEXT;$fileName" $rangeId] Cawt Destroy $worksheetId $queryTableId TextFileConsecutiveDelimiter [Cawt TclBool true] foreach { key value } $args { if { $value eq "" } { error "Import: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-delimiter" { if { $value eq "," } { $queryTableId TextFileCommaDelimiter [Cawt TclBool true] } if { $value eq ";" } { $queryTableId TextFileSemicolonDelimiter [Cawt TclBool true] } if { $value eq "\t" } { $queryTableId TextFileTabDelimiter [Cawt TclBool true] } if { $value eq " " } { $queryTableId TextFileSpaceDelimiter [Cawt TclBool true] } } "-decimalseparator" { $queryTableId TextFileDecimalSeparator $value } "-thousandsseparator" { $queryTableId TextFileThousandsSeparator $value } default { error "Import: Unknown key \"$key\" specified" } } } $queryTableId Refresh Cawt Destroy $queryTableId }
InsertColumn [::Excel]Top, Main, Index
Insert a new empty column.
Parameters
worksheetId | Identifier of the worksheet. |
col | Column number. Column numbering starts with 1. |
Description
A new empty column is inserted at given column number.
Return value
Returns no value.
See also
DeleteColumn, DuplicateColumn, HideColumn, InsertRow
proc ::Excel::InsertColumn {worksheetId col} { # Insert a new empty column. # # worksheetId - Identifier of the worksheet. # col - Column number. Column numbering starts with 1. # # A new empty column is inserted at given column number. # # Returns no value. # # See also: DeleteColumn DuplicateColumn HideColumn InsertRow set cell [Excel SelectCellByIndex $worksheetId 1 $col] $cell -with { EntireColumn } Insert $::Excel::xlToRight $::Excel::xlFormatFromLeftOrAbove Cawt Destroy $cell }
InsertImage [::Excel]Top, Main, Index
Insert an image into a worksheet.
Parameters
worksheetId | Identifier of the worksheet where the image is inserted. |
imgFileName | File name of the image. |
row | Row number. Row numbering starts with 1. Optional, default 1 . |
col | Column number. Column numbering starts with 1. Optional, default 1 . |
linkToFile | Insert a link to the image file. Optional, default false . |
saveWithDoc | Embed the image into the document. Optional, default true . |
Description
The file name of the image must be an absolute pathname. Use a construct like [file join [pwd] "myImage.gif"]
to insert images from the current directory.
If both $linkToFile
and $saveWithDoc
are set to false, an error is thrown.
Return value
Returns the identifier of the inserted image as a shape.
See also
proc ::Excel::InsertImage {worksheetId imgFileName {row 1} {col 1} {linkToFile false} {saveWithDoc true}} { # Insert an image into a worksheet. # # worksheetId - Identifier of the worksheet where the image is inserted. # imgFileName - File name of the image. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # linkToFile - Insert a link to the image file. # saveWithDoc - Embed the image into the document. # # The file name of the image must be an absolute pathname. Use a # construct like `[file join [pwd] "myImage.gif"]` to insert # images from the current directory. # # If both $linkToFile and $saveWithDoc are set to false, an error is thrown. # # Returns the identifier of the inserted image as a shape. # # See also: ScaleImage if { ! $linkToFile && ! $saveWithDoc } { error "InsertImage: linkToFile and saveWithDoc are both set to false." } set cellId [Excel SelectCellByIndex $worksheetId $row $col true] set fileName [file nativename [file normalize $imgFileName]] set shapeId [$cellId -with { Parent Shapes } AddPicture $fileName [Cawt TclInt $linkToFile] [Cawt TclInt $saveWithDoc] [$cellId Left] [$cellId Top] -1 -1] Cawt Destroy $cellId return $shapeId }
InsertRow [::Excel]Top, Main, Index
Insert a new empty row.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
Description
A new empty row is inserted at given row number.
Return value
Returns no value.
See also
DeleteRow, DuplicateRow, HideRow, InsertColumn
proc ::Excel::InsertRow {worksheetId row} { # Insert a new empty row. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # # A new empty row is inserted at given row number. # # Returns no value. # # See also: DeleteRow DuplicateRow HideRow InsertColumn set cell [Excel SelectCellByIndex $worksheetId $row 1] $cell -with { EntireRow } Insert $::Excel::xlDown $::Excel::xlFormatFromLeftOrAbove Cawt Destroy $cell }
IsWorkbookId [::Excel]Top, Main, Index
Check, if Excel object is a workbook identifier.
Parameters
objId | The identifier of an Excel object. |
Return value
Returns true, if $objId
is a valid Excel workbook identifier. Otherwise returns false.
See also
::Cawt::IsComObject, ::Office::GetApplicationId
proc ::Excel::IsWorkbookId {objId} { # Check, if Excel object is a workbook identifier. # # objId - The identifier of an Excel object. # # Returns true, if $objId is a valid Excel workbook identifier. # Otherwise returns false. # # See also: ::Cawt::IsComObject ::Office::GetApplicationId set retVal [catch {$objId ActiveSheet} errMsg] # ActiveSheet is a property of the workbook class. if { $retVal == 0 } { return true } else { return false } }
IsWorkbookOpen [::Excel]Top, Main, Index
Check, if a workbook is open.
Parameters
appId | Identifier of the Excel instance. |
workbookName | Name of the workbook to find. |
Return value
Returns true, if the workbook is open, otherwise false.
See also
OpenWorkbook, IsWorkbookProtected
proc ::Excel::IsWorkbookOpen {appId workbookName} { # Check, if a workbook is open. # # appId - Identifier of the Excel instance. # workbookName - Name of the workbook to find. # # Returns true, if the workbook is open, otherwise false. # # See also: OpenWorkbook IsWorkbookProtected set retVal [catch {Excel GetWorkbookIdByName $appId $workbookName} errMsg] if { $retVal == 0 } { return true } else { return false } }
IsWorkbookProtected [::Excel]Top, Main, Index
Check, if a workbook is protected.
Parameters
workbookId | Identifier of the workbook to be checked. |
Return value
Returns true, if the workbook is protected, otherwise false.
See also
proc ::Excel::IsWorkbookProtected {workbookId} { # Check, if a workbook is protected. # # workbookId - Identifier of the workbook to be checked. # # Returns true, if the workbook is protected, otherwise false. # # See also: OpenWorkbook IsWorkbookOpen if { [$workbookId ProtectWindows] } { return true } else { return false } }
IsWorksheetEmpty [::Excel]Top, Main, Index
Check, if a worksheet is empty.
Parameters
worksheetId | Identifier of the worksheet to be checked. |
Return value
Returns true, if the worksheet is empty, otherwise false.
See also
GetNumUsedRows, GetNumUsedColumns, GetFirstUsedRow, GetLastUsedRow
proc ::Excel::IsWorksheetEmpty {worksheetId} { # Check, if a worksheet is empty. # # worksheetId - Identifier of the worksheet to be checked. # # Returns true, if the worksheet is empty, otherwise false. # # See also: GetNumUsedRows GetNumUsedColumns GetFirstUsedRow GetLastUsedRow if { [GetLastUsedRow $worksheetId] == 1 && [GetLastUsedColumn $worksheetId] == 1 && [GetCellValue $worksheetId 1 1] eq "" } { return true } return false }
IsWorksheetProtected [::Excel]Top, Main, Index
Check, if a worksheet is content protected.
Parameters
worksheetId | Identifier of the worksheet to be checked. |
Return value
Returns true, if the worksheet is protected, otherwise false.
See also
proc ::Excel::IsWorksheetProtected {worksheetId} { # Check, if a worksheet is content protected. # # worksheetId - Identifier of the worksheet to be checked. # # Returns true, if the worksheet is protected, otherwise false. # # See also: AddWorksheet if { [$worksheetId ProtectContents] } { return true } else { return false } }
IsWorksheetVisible [::Excel]Top, Main, Index
Check, if a worksheet is visible.
Parameters
worksheetId | Identifier of the worksheet to be checked. |
Return value
Returns true, if the worksheet is visible, otherwise false.
See also
proc ::Excel::IsWorksheetVisible {worksheetId} { # Check, if a worksheet is visible. # # worksheetId - Identifier of the worksheet to be checked. # # Returns true, if the worksheet is visible, otherwise false. # # See also: AddWorksheet if { [$worksheetId Visible] == $::Excel::xlSheetVisible } { return true } else { return false } }
ListToCsvRow [::Excel]Top, Main, Index
Return a list of column values as a CSV
encoded row string.
Parameters
rowList | List of column values. |
Return value
Returns the list of column values as a CSV
encoded row string.
See also
proc ::Excel::ListToCsvRow {rowList} { # Return a list of column values as a `CSV` encoded row string. # # rowList - List of column values. # # Returns the list of column values as a `CSV` encoded row string. # # See also: CsvRowToList variable sSepChar set rowStr "" set len1 [expr [llength $rowList] -1] set curVal 0 foreach val $rowList { set tmp [string map {\n\r \ } $val] if { [string first $sSepChar $tmp] >= 0 || [string first "\"" $tmp] >= 0 } { regsub -all {"} $tmp {""} tmp set tmp [format "\"%s\"" $tmp] } if { $curVal < $len1 } { append rowStr $tmp $sSepChar } else { append rowStr $tmp } incr curVal } return $rowStr }
MapWorksheetName [::Excel]Top, Main, Index
Map the name of a worksheet to confirm to Excel constraints.
Parameters
name | Name of the worksheet. |
Description
The following characters are not allowed in worksheet names and are thus mapped as follows:
[ to ( ] to ) \ to _ / to _ ? to | * to + : to ;
After mapping, the string is truncated to 31 characters, which is the maximum length of a worksheet name.
Return value
Returns the mapped worksheet name.
See also
SetWorksheetName, AddWorksheet
proc ::Excel::MapWorksheetName {name} { # Map the name of a worksheet to confirm to Excel constraints. # # name - Name of the worksheet. # # The following characters are not allowed in worksheet names # and are thus mapped as follows: # [ to ( # ] to ) # \ to _ # / to _ # ? to | # * to + # : to ; # # After mapping, the string is truncated to 31 characters, # which is the maximum length of a worksheet name. # # Returns the mapped worksheet name. # # See also: SetWorksheetName AddWorksheet set mapped [string map { "\[" "(" "\]" ")" "\\" "_" "/" "_" "?" "|" "*" "+" ":" ";" } $name] set sheetName [string range $mapped 0 30] return $sheetName }
MatlabFileToExcelFile [::Excel]Top, Main, Index
Convert a Matlab table file to an Excel file.
Parameters
matFileName | Name of the Matlab input file. |
excelFileName | Name of the Excel output file. |
useHeader | If set to true, insert the header of the Matlab file as first row. Otherwise only transfer the data values as floating point values. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
Description
The table data from the Matlab file will be inserted into a worksheet name "Matlab".
Note: Only Matlab Level 4 files are currently supported.
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
MatlabFileToWorksheet, ExcelFileToMatlabFile, ReadMatlabFile
proc ::Excel::MatlabFileToExcelFile {matFileName excelFileName {useHeader true} {quitExcel true}} { # Convert a Matlab table file to an Excel file. # # matFileName - Name of the Matlab input file. # excelFileName - Name of the Excel output file. # useHeader - If set to true, insert the header of the Matlab file as first row. # Otherwise only transfer the data values as floating point values. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # # The table data from the Matlab file will be inserted into a worksheet name "Matlab". # # **Note:** Only Matlab Level 4 files are currently supported. # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: MatlabFileToWorksheet ExcelFileToMatlabFile ReadMatlabFile set appId [Excel OpenNew true] set workbookId [Excel AddWorkbook $appId] set worksheetId [Excel AddWorksheet $workbookId "Matlab"] Excel MatlabFileToWorksheet $matFileName $worksheetId $useHeader Excel SaveAs $workbookId $excelFileName if { $quitExcel } { Excel Quit $appId } else { return $appId } }
MatlabFileToWorksheet [::Excel]Top, Main, Index
Insert the data values of a Matlab file into a worksheet.
Parameters
matFileName | Name of the Matlab file. |
worksheetId | Identifier of the worksheet. |
useHeader | If set to true, insert the header of the Matlab file as first row. Otherwise only transfer the data values as floating point values. Optional, default true . |
Description
The header information are as follows: MatlabVersion Width Height
Note: Only Matlab Level 4 files are currently supported.
Return value
Returns no value.
See also
WorksheetToMatlabFile, SetMatrixValues, WikitFileToWorksheet, MediaWikiFileToWorksheet, RawImageFileToWorksheet, TablelistToWorksheet, WordTableToWorksheet
proc ::Excel::MatlabFileToWorksheet {matFileName worksheetId {useHeader true}} { # Insert the data values of a Matlab file into a worksheet. # # matFileName - Name of the Matlab file. # worksheetId - Identifier of the worksheet. # useHeader - If set to true, insert the header of the Matlab file as first row. # Otherwise only transfer the data values as floating point values. # # The header information are as follows: `MatlabVersion Width Height` # # **Note:** Only Matlab Level 4 files are currently supported. # # Returns no value. # # See also: WorksheetToMatlabFile SetMatrixValues # WikitFileToWorksheet MediaWikiFileToWorksheet RawImageFileToWorksheet # TablelistToWorksheet WordTableToWorksheet set startRow 1 if { $useHeader } { set headerList [Excel ReadMatlabHeader $matFileName] Excel SetHeaderRow $worksheetId $headerList Excel FreezePanes $worksheetId 1 0 true incr startRow } set matrixList [Excel ReadMatlabFile $matFileName] Excel SetMatrixValues $worksheetId $matrixList $startRow 1 }
MatrixToClipboard [::Excel]Top, Main, Index
Copy a matrix into the clipboard.
Parameters
matrixList | Matrix with table data. |
sepChar | The separation character of the clipboard matrix data. Optional, default ; . |
Description
The clipboard data will be in CSV
format with $sepChar
as separation character. See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
WorksheetToClipboard, ClipboardToMatrix
proc ::Excel::MatrixToClipboard {matrixList {sepChar {;}}} { # Copy a matrix into the clipboard. # # matrixList - Matrix with table data. # sepChar - The separation character of the clipboard matrix data. # # The clipboard data will be in `CSV` format with $sepChar as separation character. # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: WorksheetToClipboard ClipboardToMatrix set csvFmt [twapi::register_clipboard_format "Csv"] twapi::open_clipboard twapi::empty_clipboard Excel SetCsvSeparatorChar $sepChar twapi::write_clipboard $csvFmt [Excel MatrixToCsvString $matrixList] twapi::close_clipboard }
MatrixToCsvString [::Excel]Top, Main, Index
Return a CSV
encoded table string from a matrix list.
Parameters
matrixList | Matrix with table data. |
Return value
Returns the CSV
encoded table string from a matrix list.
See also
CsvStringToMatrix, ListToCsvRow
proc ::Excel::MatrixToCsvString {matrixList} { # Return a `CSV` encoded table string from a matrix list. # # matrixList - Matrix with table data. # # Returns the `CSV` encoded table string from a matrix list. # # See also: CsvStringToMatrix ListToCsvRow foreach rowList $matrixList { append str [Excel ListToCsvRow $rowList] append str "\n" } return [string range $str 0 end-1] }
MediaWikiFileToExcelFile [::Excel]Top, Main, Index
Convert a MediaWiki table file to an Excel file.
Parameters
wikiFileName | Name of the MediaWiki input file. |
excelFileName | Name of the Excel output file. |
useHeader | If set to true, use header information from the MediaWiki file to generate an Excel header (see SetHeaderRow). Otherwise only transfer the table data. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
Description
The table data from the MediaWiki file will be inserted into a worksheet named "MediaWiki".
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
MediaWikiFileToWorksheet, ExcelFileToMediaWikiFile, ReadMediaWikiFile, WriteMediaWikiFile, WikitFileToExcelFile
proc ::Excel::MediaWikiFileToExcelFile {wikiFileName excelFileName {useHeader true} {quitExcel true}} { # Convert a MediaWiki table file to an Excel file. # # wikiFileName - Name of the MediaWiki input file. # excelFileName - Name of the Excel output file. # useHeader - If set to true, use header information from the MediaWiki file to # generate an Excel header (see [SetHeaderRow]). # Otherwise only transfer the table data. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # # The table data from the MediaWiki file will be inserted into a worksheet named "MediaWiki". # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: MediaWikiFileToWorksheet ExcelFileToMediaWikiFile # ReadMediaWikiFile WriteMediaWikiFile WikitFileToExcelFile set appId [Excel OpenNew true] set workbookId [Excel AddWorkbook $appId] set worksheetId [Excel AddWorksheet $workbookId "MediaWiki"] Excel MediaWikiFileToWorksheet $wikiFileName $worksheetId $useHeader Excel SaveAs $workbookId $excelFileName if { $quitExcel } { Excel Quit $appId } else { return $appId } }
MediaWikiFileToWorksheet [::Excel]Top, Main, Index
Insert the values of a MediaWiki table file into a worksheet.
Parameters
wikiFileName | Name of the MediaWiki file. |
worksheetId | Identifier of the worksheet. |
useHeader | If set to true, insert the header of the MediaWiki table as first row. Otherwise only transfer the table data. Optional, default true . |
Description
The insertion starts at row and column 1. Values contained in the worksheet cells are overwritten.
Return value
Returns no value.
See also
WorksheetToMediaWikiFile, SetMatrixValues, WikitFileToWorksheet, WordTableToWorksheet, MatlabFileToWorksheet, RawImageFileToWorksheet, TablelistToWorksheet
proc ::Excel::MediaWikiFileToWorksheet {wikiFileName worksheetId {useHeader true}} { # Insert the values of a MediaWiki table file into a worksheet. # # wikiFileName - Name of the MediaWiki file. # worksheetId - Identifier of the worksheet. # useHeader - If set to true, insert the header of the MediaWiki table as first row. # Otherwise only transfer the table data. # # The insertion starts at row and column 1. # Values contained in the worksheet cells are overwritten. # # Returns no value. # # See also: WorksheetToMediaWikiFile SetMatrixValues # WikitFileToWorksheet WordTableToWorksheet MatlabFileToWorksheet # RawImageFileToWorksheet TablelistToWorksheet set catchVal [catch {open $wikiFileName "r"} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for reading." } # TODO |- style="background:green" set row 1 set firstRow true set rowList {} while { [gets $fp line] >= 0 } { if { [string index $line 0] eq "!" && $useHeader } { # Found a header line. Currently only headers with "!!" separators are supported. set headerList [Excel::_MediaWikiRowString2List $line "!!"] Excel SetHeaderRow $worksheetId $headerList incr row } elseif { [string range $line 0 1] eq "|+" } { set worksheetName [string trim [string range $line 2 end]] Excel SetWorksheetName $worksheetId $worksheetName } elseif { [string range $line 0 1] eq "|-" || [string range $line 0 1] eq "|\}" } { if { $firstRow } { set firstRow false continue } if { [llength $rowList] != 0 } { Excel SetRowValues $worksheetId $row $rowList incr row } set rowList {} } elseif { [string index $line 0] eq "|" } { if { [string first "||" $line] >= 0 } { set rowList [Excel::_MediaWikiRowString2List $line "||"] } else { lappend rowList [Excel::_MediaWikiSubstHtml [string range $line 1 end]] } } } close $fp }
Open [::Excel]Top, Main, Index
Open an Excel instance. Use an already running instance, if available.
Parameters
visible | If set to true, show the application window. Otherwise hide the application window. Optional, default true . |
width | Width of the application window. If negative, open with last used width. Optional, default -1 . |
height | Height of the application window. If negative, open with last used height. Optional, default -1 . |
Return value
Returns the identifier of the Excel application instance.
See also
proc ::Excel::Open {{visible true} {width -1} {height -1}} { # Open an Excel instance. Use an already running instance, if available. # # visible - If set to true, show the application window. # Otherwise hide the application window. # width - Width of the application window. If negative, open with last used width. # height - Height of the application window. If negative, open with last used height. # # Returns the identifier of the Excel application instance. # # See also: OpenNew Quit Visible variable excelAppName variable excelVersion set appId [Cawt GetOrCreateApp $excelAppName true] set excelVersion [Excel GetVersion $appId] Excel::_setFloatSeparator $appId Excel Visible $appId $visible if { $width >= 0 } { $appId Width [expr $width] } if { $height >= 0 } { $appId Height [expr $height] } return $appId }
OpenNew [::Excel]Top, Main, Index
Open a new Excel instance.
Parameters
visible | If set to true, show the application window. Otherwise hide the application window. Optional, default true . |
width | Width of the application window. If negative, open with last used width. Optional, default -1 . |
height | Height of the application window. If negative, open with last used height. Optional, default -1 . |
Return value
Returns the identifier of the new Excel application instance.
See also
proc ::Excel::OpenNew {{visible true} {width -1} {height -1}} { # Open a new Excel instance. # # visible - If set to true, show the application window. # Otherwise hide the application window. # width - Width of the application window. If negative, open with last used width. # height - Height of the application window. If negative, open with last used height. # # Returns the identifier of the new Excel application instance. # # See also: Open Quit Visible variable excelAppName variable excelVersion set appId [Cawt GetOrCreateApp $excelAppName false] set excelVersion [Excel GetVersion $appId] Excel::_setFloatSeparator $appId Excel Visible $appId $visible if { $width >= 0 } { $appId Width [expr $width] } if { $height >= 0 } { $appId Height [expr $height] } return $appId }
OpenWorkbook [::Excel]Top, Main, Index
Open a workbook, i.e. load an Excel file.
Parameters
appId | Identifier of the Excel instance. |
fileName | Name of the Excel file. |
args | Options described below. |
-embed <frame> | Embed the workbook into a Tk frame. This frame must exist and must be created with option -container true . |
-readonly <bool> | If set to true, open the workbook in read-only mode. Default is to open the workbook in read-write mode. |
Return value
Returns the identifier of the opened workbook. If the workbook was already open, activate that workbook and return the identifier to that workbook.
See also
proc ::Excel::OpenWorkbook {appId fileName args} { # Open a workbook, i.e. load an Excel file. # # appId - Identifier of the Excel instance. # fileName - Name of the Excel file. # args - Options described below. # # -readonly <bool> - If set to true, open the workbook in read-only mode. # Default is to open the workbook in read-write mode. # -embed <frame> - Embed the workbook into a Tk frame. This frame must # exist and must be created with option `-container true`. # # Returns the identifier of the opened workbook. If the workbook was # already open, activate that workbook and return the identifier to # that workbook. # # See also: AddWorkbook Close SaveAs set opts [dict create -readonly false -embed "" ] if { [llength $args] == 1 } { # Old mode with optional boolean parameter readOnly dict set opts -readonly [lindex $args 0] } else { foreach { key value } $args { if { [dict exists $opts $key] } { if { $value eq "" } { error "OpenWorkbook: No value specified for key \"$key\"." } dict set opts $key $value } else { error "OpenWorkbook: Unknown option \"$key\" specified." } } } if { [Excel IsWorkbookOpen $appId $fileName] } { set workbookId [Excel GetWorkbookIdByName $appId $fileName] $workbookId Activate } else { set workbooks [$appId Workbooks] # Open(Filename As String, [UpdateLinks], [ReadOnly], [Format], # [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], # [Origin], [Delimiter], [Editable], [Notify], [Converter], # [AddToMru], [Local], [CorruptLoad]) set workbookId [$workbooks -callnamedargs Open Filename [file nativename [file normalize $fileName]] ReadOnly [Cawt TclInt [dict get $opts "-readonly"]]] Cawt Destroy $workbooks } set embedFrame [dict get $opts "-embed"] if { $embedFrame ne "" } { set workbookWindows [$workbookId Windows] $workbookWindows -iterate window { set windowHndl [$window Hwnd] set windowId [list $windowHndl HWND] break } Cawt Destroy $workbookWindows Cawt EmbedApp $embedFrame -appid [Office GetApplicationId $workbookId] -window $windowId } return $workbookId }
PlaceChart [::Excel]Top, Main, Index
Place an existing chart into a worksheet.
Parameters
chartId | Identifier of the chart. |
worksheetId | Identifier of the worksheet. |
Return value
Returns the ChartObject identifier of the placed chart.
See also
CreateChart, SetChartObjSize, SetChartObjPosition
proc ::Excel::PlaceChart {chartId worksheetId} { # Place an existing chart into a worksheet. # # chartId - Identifier of the chart. # worksheetId - Identifier of the worksheet. # # Returns the ChartObject identifier of the placed chart. # # See also: CreateChart SetChartObjSize SetChartObjPosition set newChartId [$chartId Location $::Excel::xlLocationAsObject [Excel GetWorksheetName $worksheetId]] return $newChartId }
Quit [::Excel]Top, Main, Index
Quit an Excel instance.
Parameters
appId | Identifier of the Excel instance. |
showAlert | If set to true, show an alert window, if there are unsaved changes. Otherwise quit without asking and saving any changes. Optional, default true . |
Return value
Returns no value.
See also
proc ::Excel::Quit {appId {showAlert true}} { # Quit an Excel instance. # # appId - Identifier of the Excel instance. # showAlert - If set to true, show an alert window, if there are unsaved changes. # Otherwise quit without asking and saving any changes. # # Returns no value. # # See also: Open OpenNew Excel::ShowAlerts $appId $showAlert $appId Quit }
RawImageFileToExcelFile [::Excel]Top, Main, Index
Convert a raw photo image file to an Excel file.
Parameters
rawFileName | Name of the raw photo image input file. |
excelFileName | Name of the Excel output file. |
useHeader | If set to true, use header information from the image file to generate an Excel header (see SetHeaderRow). Otherwise only transfer the image data. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
Description
The table data from the image file will be inserted into a worksheet named "RawImage".
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
RawImageFileToWorksheet, ExcelFileToRawImageFile, ReadRawImageFile, WriteRawImageFile
proc ::Excel::RawImageFileToExcelFile {rawFileName excelFileName {useHeader true} {quitExcel true}} { # Convert a raw photo image file to an Excel file. # # rawFileName - Name of the raw photo image input file. # excelFileName - Name of the Excel output file. # useHeader - If set to true, use header information from the image file to # generate an Excel header (see [SetHeaderRow]). # Otherwise only transfer the image data. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # # The table data from the image file will be inserted into a worksheet named "RawImage". # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: RawImageFileToWorksheet ExcelFileToRawImageFile ReadRawImageFile WriteRawImageFile set appId [Excel OpenNew true] set workbookId [Excel AddWorkbook $appId] set worksheetId [Excel AddWorksheet $workbookId "RawImage"] Excel RawImageFileToWorksheet $rawFileName $worksheetId $useHeader Excel SaveAs $workbookId $excelFileName if { $quitExcel } { Excel Quit $appId } else { return $appId } }
RawImageFileToWorksheet [::Excel]Top, Main, Index
Insert the pixel values of a raw photo image into a worksheet.
Parameters
rawFileName | File name of the image. |
worksheetId | Identifier of the worksheet. |
useHeader | If set to true, insert the header of the raw image as first row. Otherwise only transfer the pixel values as floating point values. Optional, default true . |
Description
The header information are as follows: Magic Width Height NumChan ByteOrder ScanOrder PixelType
Note: Only 1-channel floating-point raw images are currently supported.
Return value
Returns no value.
See also
WorksheetToRawImageFile, SetMatrixValues, WikitFileToWorksheet, MediaWikiFileToWorksheet, MatlabFileToWorksheet, TablelistToWorksheet, WordTableToWorksheet
proc ::Excel::RawImageFileToWorksheet {rawFileName worksheetId {useHeader true}} { # Insert the pixel values of a raw photo image into a worksheet. # # rawFileName - File name of the image. # worksheetId - Identifier of the worksheet. # useHeader - If set to true, insert the header of the raw image as first row. # Otherwise only transfer the pixel values as floating point values. # # The header information are as follows: # `Magic Width Height NumChan ByteOrder ScanOrder PixelType` # # **Note:** Only 1-channel floating-point raw images are currently supported. # # Returns no value. # # See also: WorksheetToRawImageFile SetMatrixValues # WikitFileToWorksheet MediaWikiFileToWorksheet MatlabFileToWorksheet # TablelistToWorksheet WordTableToWorksheet set startRow 1 if { $useHeader } { set headerList [Excel ReadRawImageHeader $rawFileName] Excel SetHeaderRow $worksheetId $headerList Excel FreezePanes $worksheetId 1 0 true incr startRow } set matrixList [Excel ReadRawImageFile $rawFileName] Excel SetMatrixValues $worksheetId $matrixList $startRow 1 }
ReadCsvFile [::Excel]Top, Main, Index
Read a CSV
table file into a matrix.
Parameters
csvFileName | Name of the CSV file. |
useHeader | If set to true, insert the header rows of the CSV file into the matrix. Otherwise only transfer the table data. Optional, default true . |
numHeaderRows | Number of rows interpreted as header rows. Optional, default 0 . |
Description
See SetMatrixValues for the description of a matrix representation.
Return value
Returns the CSV
table data as a matrix.
See also
proc ::Excel::ReadCsvFile {csvFileName {useHeader true} {numHeaderRows 0}} { # Read a `CSV` table file into a matrix. # # csvFileName - Name of the `CSV` file. # useHeader - If set to true, insert the header rows of the `CSV` file into the matrix. # Otherwise only transfer the table data. # numHeaderRows - Number of rows interpreted as header rows. # # See [SetMatrixValues] for the description of a matrix representation. # # Returns the `CSV` table data as a matrix. # # See also: WriteCsvFile variable sSepChar set matrixList {} set rowCount 1 set catchVal [catch {open $csvFileName r} fp] if { $catchVal != 0 } { error "Could not open file \"$csvFileName\" for reading." } fconfigure $fp -translation binary # Read some bytes and search for \r\n to detect a DOS file. set test [read $fp 4096] if { [string match "*\r\n*" $test] } { fconfigure $fp -translation crlf } else { fconfigure $fp -translation lf } seek $fp 0 while { [gets $fp row] >= 0 } { if { $rowCount <= $numHeaderRows && ! $useHeader } { incr rowCount continue } set tmpList [Excel CsvRowToList $row] lappend matrixList $tmpList incr rowCount } close $fp return $matrixList }
ReadMatlabFile [::Excel]Top, Main, Index
Read a Matlab file into a matrix.
Parameters
matFileName | Name of the Matlab file. |
Description
Note: Only Matlab Level 4 files are currently supported.
Return value
Returns the Matlab file data as a matrix. See SetMatrixValues for the description of a matrix representation.
See also
ReadMatlabHeader, WriteMatlabFile, MatlabFileToWorksheet
proc ::Excel::ReadMatlabFile {matFileName} { # Read a Matlab file into a matrix. # # matFileName - Name of the Matlab file. # # **Note:** Only Matlab Level 4 files are currently supported. # # Returns the Matlab file data as a matrix. # See [SetMatrixValues] for the description of a matrix representation. # # See also: ReadMatlabHeader WriteMatlabFile MatlabFileToWorksheet set retVal [catch {open $matFileName "r"} matFp] if { $retVal != 0 } { error "Cannot open file $matFileName" } fconfigure $matFp -translation binary set headerList [Excel::_GetMatlabHeader $matFp] lassign $headerList version width height # Parse a Level 4 MAT-File if { $version == 4 } { set bytesPerPixel 8 for { set col 0 } { $col < $width } { incr col } { for { set row 0 } { $row < $height } { incr row } { set valBytes [read $matFp $bytesPerPixel] binary scan $valBytes d val lappend rowList($row) $val } } } for { set row 0 } { $row < $height } { incr row } { lappend matrixList $rowList($row) } close $matFp return $matrixList }
ReadMatlabHeader [::Excel]Top, Main, Index
Read the header of a Matlab file.
Parameters
matFileName | Name of the Matlab file. |
Return value
Returns the header information as a list of integers containing the following values: MatlabVersion Width Height
See also
proc ::Excel::ReadMatlabHeader {matFileName} { # Read the header of a Matlab file. # # matFileName - Name of the Matlab file. # # Returns the header information as a list of integers containing the # following values: `MatlabVersion Width Height` # # See also: ReadMatlabFile set retVal [catch {open $matFileName "r"} matFp] if { $retVal != 0 } { error "Cannot open file $matFileName" } fconfigure $matFp -translation binary set headerList [Excel::_GetMatlabHeader $matFp] close $matFp return $headerList }
ReadMediaWikiFile [::Excel]Top, Main, Index
Read a MediaWiki table file into a matrix.
Parameters
wikiFileName | Name of the MediaWiki file. |
useHeader | If set to true, insert the header of the MediaWiki table as first row. Otherwise only transfer the table data. Optional, default true . |
Return value
Returns the MediaWiki table data as a matrix. See SetMatrixValues for the description of a matrix representation.
See also
WriteMediaWikiFile, MediaWikiFileToWorksheet
proc ::Excel::ReadMediaWikiFile {wikiFileName {useHeader true}} { # Read a MediaWiki table file into a matrix. # # wikiFileName - Name of the MediaWiki file. # useHeader - If set to true, insert the header of the MediaWiki table as first row. # Otherwise only transfer the table data. # # Returns the MediaWiki table data as a matrix. # See [SetMatrixValues] for the description of a matrix representation. # # See also: WriteMediaWikiFile MediaWikiFileToWorksheet set tmpList {} set matrixList {} set firstRow true set catchVal [catch {open $wikiFileName r} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for reading." } while { [gets $fp line] >= 0 } { if { [string index $line 0] eq "!" && $useHeader } { set tmpList [Excel::_MediaWikiRowString2List $line "!!"] } elseif { [string range $line 0 1] eq "|-" || [string range $line 0 1] eq "|\}" } { if { $firstRow } { set firstRow false continue } lappend matrixList $tmpList set tmpList {} } elseif { [string index $line 0] eq "|" } { if { [string first "||" $line] >= 0 } { set tmpList [Excel::_MediaWikiRowString2List $line "||"] } else { lappend tmpList [Excel::_MediaWikiSubstHtml [string range $line 1 end]] } } } close $fp return $matrixList }
ReadRawImageFile [::Excel]Top, Main, Index
Read a raw photo image into a matrix.
Parameters
rawImgFile | File name of the image. |
Description
Note: Only 1-channel floating-point raw images are currently supported.
Return value
Returns the image data as a matrix. See SetMatrixValues for the description of a matrix representation.
See also
ReadRawImageHeader, WriteRawImageFile, RawImageFileToWorksheet
proc ::Excel::ReadRawImageFile {rawImgFile} { # Read a raw photo image into a matrix. # # rawImgFile - File name of the image. # # **Note:** Only 1-channel floating-point raw images are currently supported. # # Returns the image data as a matrix. # See [SetMatrixValues] for the description of a matrix representation. # # See also: ReadRawImageHeader WriteRawImageFile RawImageFileToWorksheet set retVal [catch {open $rawImgFile "r"} rawFp] if { $retVal != 0 } { error "Cannot open file $rawImgFile" } fconfigure $rawFp -translation binary set headerList [Excel::_GetRawImageHeader $rawFp] lassign $headerList magic width height numChans byteOrder scanOrder pixelType if { $numChans != 1 } { error "Only 1-channel images currently supported." } set scanFmt [Excel::_GetScanFormat $pixelType $byteOrder] set pixelSize [Excel::_GetPixelSize $pixelType] set numVals [expr {$width*$height}] for { set row 0 } { $row < $height } { incr row } { for { set col 0 } { $col < $width } { incr col } { set valBytes [read $rawFp $pixelSize] binary scan $valBytes $scanFmt val lappend rowList($row) $val } } if { $scanOrder eq "TopDown" } { for { set row 0 } { $row < $height } { incr row } { lappend matrixList $rowList($row) } } else { for { set row [expr $height-1] } { $row >= 0 } { incr row -1 } { lappend matrixList $rowList($row) } } close $rawFp return $matrixList }
ReadRawImageHeader [::Excel]Top, Main, Index
Read the header of a raw photo image.
Parameters
rawImgFile | File name of the image. |
Return value
Returns the header information as a list containing the following values: Magic Width Height NumChan ByteOrder ScanOrder PixelType
See also
proc ::Excel::ReadRawImageHeader {rawImgFile} { # Read the header of a raw photo image. # # rawImgFile - File name of the image. # # Returns the header information as a list containing the following values: # `Magic Width Height NumChan ByteOrder ScanOrder PixelType` # # See also: ReadRawImageFile set retVal [catch {open $rawImgFile "r"} rawFp] if { $retVal != 0 } { error "Cannot open file $rawImgFile" } fconfigure $rawFp -translation binary set headerList [Excel::_GetRawImageHeader $rawFp] close $rawFp return $headerList }
ReadWikitFile [::Excel]Top, Main, Index
Read a Wikit table file into a matrix.
Parameters
wikiFileName | Name of the Wikit file. |
useHeader | If set to true, insert the header of the Wikit table as first row. Otherwise only transfer the table data. Optional, default true . |
Return value
Returns the Wikit table data as a matrix. See SetMatrixValues for the description of a matrix representation.
See also
WriteWikitFile, WikitFileToWorksheet
proc ::Excel::ReadWikitFile {wikiFileName {useHeader true}} { # Read a Wikit table file into a matrix. # # wikiFileName - Name of the Wikit file. # useHeader - If set to true, insert the header of the Wikit table as first row. # Otherwise only transfer the table data. # # Returns the Wikit table data as a matrix. # See [SetMatrixValues] for the description of a matrix representation. # # See also: WriteWikitFile WikitFileToWorksheet set catchVal [catch {open $wikiFileName r} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for reading." } set matrixList [list] while { [gets $fp line] >= 0 } { set line [string trim $line] if { ( [string range $line 0 1] eq "%|" && $useHeader ) } { set rowStr [string map {"%|" "" "|%" "" } $line] } elseif { [string range $line 0 1] eq "&|" } { set rowStr [string map {"&|" "" "|&" "" } $line] } elseif { [string index $line 0] eq "|" } { set rowStr [string range $line 1 end-1] } lappend matrixList [Excel::_WikitRowString2List $rowStr] } close $fp return $matrixList }
ResizeChartObj [::Excel]Top, Main, Index
Set the position and size of a chart object.
Parameters
chartObjId | Identifier of the chart object. |
rangeId | Identifier of the cell range. |
Description
Resize the chart object so that it fits into the specified cell range.
Return value
Returns no value.
See also
PlaceChart, SetChartObjSize, SetChartObjPosition, SelectRangeByString
proc ::Excel::ResizeChartObj {chartObjId rangeId} { # Set the position and size of a chart object. # # chartObjId - Identifier of the chart object. # rangeId - Identifier of the cell range. # # Resize the chart object so that it fits into the specified cell range. # # Returns no value. # # See also: PlaceChart SetChartObjSize SetChartObjPosition SelectRangeByString set chart [$chartObjId Parent] $chart Width [$rangeId Width] $chart Height [$rangeId Height] $chart Left [$rangeId Left] $chart Top [$rangeId Top] Cawt Destroy $chart }
SaveAs [::Excel]Top, Main, Index
Save a workbook to an Excel file.
Parameters
workbookId | Identifier of the workbook to save. |
fileName | Name of the Excel file. |
fmt | Value of enumeration type Enum::XlFileFormat. If not given or the empty string, the file is stored in the native format corresponding to the used Excel version. Optional, default "" . |
backup | If set to true, create a backup file before saving. Otherwise do not create a backup file. Optional, default false . |
Description
Note, that if you have read a CSV
file with OpenWorkbook and save it with this procedure without specifying a format, the saved file will be in CSV
format, too. Specify xlWorkbookDefault
as format, if the file should be an Excel file.
Return value
Returns no value.
See also
SaveAsCsv, Close, OpenWorkbook
proc ::Excel::SaveAs {workbookId fileName {fmt {}} {backup false}} { # Save a workbook to an Excel file. # # workbookId - Identifier of the workbook to save. # fileName - Name of the Excel file. # fmt - Value of enumeration type [Enum::XlFileFormat]. # If not given or the empty string, the file is stored in the # native format corresponding to the used Excel version. # backup - If set to true, create a backup file before saving. # Otherwise do not create a backup file. # # Note, that if you have read a `CSV` file with [OpenWorkbook] and save it with # this procedure without specifying a format, the saved file will be in `CSV` # format, too. Specify `xlWorkbookDefault` as format, if the file should be # an Excel file. # # Returns no value. # # See also: SaveAsCsv Close OpenWorkbook set fileName [file nativename [file normalize $fileName]] set appId [Office GetApplicationId $workbookId] Excel::ShowAlerts $appId false if { $fmt eq "" } { $workbookId SaveAs $fileName } else { # SaveAs([Filename], [FileFormat], [Password], # [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], # [AccessMode As XlSaveAsAccessMode = xlNoChange], # [ConflictResolution], [AddToMru], [TextCodepage], # [TextVisualLayout], [Local]) $workbookId -callnamedargs SaveAs FileName $fileName FileFormat [Excel GetEnum $fmt] CreateBackup [Cawt TclInt $backup] } Excel::ShowAlerts $appId true Cawt Destroy $appId }
SaveAsCsv [::Excel]Top, Main, Index
Save a worksheet to file in CSV
format.
Parameters
workbookId | Identifier of the workbook containing the worksheet. |
worksheetId | Identifier of the worksheet to save. |
fileName | Name of the CSV file. |
fmt | Value of enumeration type Enum::XlFileFormat. Optional, default xlCSV . |
Return value
Returns no value.
See also
proc ::Excel::SaveAsCsv {workbookId worksheetId fileName {fmt xlCSV}} { # Save a worksheet to file in `CSV` format. # # workbookId - Identifier of the workbook containing the worksheet. # worksheetId - Identifier of the worksheet to save. # fileName - Name of the `CSV` file. # fmt - Value of enumeration type [Enum::XlFileFormat]. # # Returns no value. # # See also: SaveAs Close OpenWorkbook set fileName [file nativename [file normalize $fileName]] set appId [Office GetApplicationId $workbookId] Excel::ShowAlerts $appId false # SaveAs(Filename As String, [FileFormat], [Password], # [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], # [AddToMru], [TextCodepage], [TextVisualLayout], [Local]) $worksheetId -callnamedargs SaveAs Filename $fileName FileFormat [Excel GetEnum $fmt] Excel::ShowAlerts $appId true Cawt Destroy $appId }
SaveChartAsImage [::Excel]Top, Main, Index
Obsolete: Replaced with SaveChartObjAsImage in version 1.0.1
Parameters
chartId | Not documented. |
fileName | Not documented. |
filterType | Not documented. Optional, default GIF . |
proc ::Excel::SaveChartAsImage {chartId fileName {filterType GIF}} { # Obsolete: Replaced with [SaveChartObjAsImage] in version 1.0.1 Excel SaveChartObjAsImage $chartId $fileName $filterType }
SaveChartObjAsImage [::Excel]Top, Main, Index
Save a chart as an image in a file.
Parameters
chartObjId | Identifier of the chart object. |
fileName | Image file name. |
filterType | Name of graphic filter. Possible values: GIF , JPEG , PNG . Optional, default GIF . |
Return value
Returns no value.
See also
ChartObjToClipboard, CreateChart
proc ::Excel::SaveChartObjAsImage {chartObjId fileName {filterType GIF}} { # Save a chart as an image in a file. # # chartObjId - Identifier of the chart object. # fileName - Image file name. # filterType - Name of graphic filter. Possible values: `GIF`, `JPEG`, `PNG`. # # Returns no value. # # See also: ChartObjToClipboard CreateChart set fileName [file nativename [file normalize $fileName]] $chartObjId Export $fileName $filterType }
ScaleImage [::Excel]Top, Main, Index
Scale an image.
Parameters
shapeId | Identifier of the image shape. |
scaleWidth | Horizontal scale factor. |
scaleHeight | Vertical scale factor. |
Description
The scale factors are floating point values. 1.0 means no scaling.
Return value
Returns no value.
See also
proc ::Excel::ScaleImage {shapeId scaleWidth scaleHeight} { # Scale an image. # # shapeId - Identifier of the image shape. # scaleWidth - Horizontal scale factor. # scaleHeight - Vertical scale factor. # # The scale factors are floating point values. 1.0 means no scaling. # # Returns no value. # # See also: InsertImage $shapeId LockAspectRatio [Cawt TclInt false] $shapeId ScaleWidth [expr double($scaleWidth)] [Cawt TclInt true] $shapeId ScaleHeight [expr double($scaleHeight)] [Cawt TclInt true] }
ScreenUpdate [::Excel]Top, Main, Index
Toggle the screen updating of an Excel application window.
Parameters
appId | Identifier of the Excel instance. |
onOff | If set to true, update the application window. Otherwise do not update the application window. |
Return value
Returns no value.
See also
Visible, SetWindowState, ArrangeWindows
proc ::Excel::ScreenUpdate {appId onOff} { # Toggle the screen updating of an Excel application window. # # appId - Identifier of the Excel instance. # onOff - If set to true, update the application window. # Otherwise do not update the application window. # # Returns no value. # # See also: Visible SetWindowState ArrangeWindows $appId ScreenUpdating [Cawt TclBool $onOff] }
Search [::Excel]Top, Main, Index
Find a string in a worksheet cell range.
Parameters
worksheetId | Identifier of the worksheet. |
str | Search string. |
row1 | Row number of upper-left corner of the cell range. Optional, default 1 . |
col1 | Column number of upper-left corner of the cell range. Optional, default 1 . |
row2 | Row number of lower-right corner of the cell range. Optional, default -1 . |
col2 | Column number of lower-right corner of the cell range. Optional, default -1 . |
Description
If $row2
or $col2
is negative, all used rows and columns are searched.
Return value
Returns the first matching cell as a 2-element list {row, col}
of indices. If no cell matches the search criteria, an empty list is returned.
proc ::Excel::Search {worksheetId str {row1 1} {col1 1} {row2 -1} {col2 -1}} { # Find a string in a worksheet cell range. # # worksheetId - Identifier of the worksheet. # str - Search string. # row1 - Row number of upper-left corner of the cell range. # col1 - Column number of upper-left corner of the cell range. # row2 - Row number of lower-right corner of the cell range. # col2 - Column number of lower-right corner of the cell range. # # If $row2 or $col2 is negative, all used rows and columns are searched. # # Returns the first matching cell as a 2-element list `{row, col}` of indices. # If no cell matches the search criteria, an empty list is returned. if { $row2 < 0 } { set row2 [Excel GetLastUsedRow $worksheetId] } if { $col2 < 0 } { set col2 [Excel GetLastUsedColumn $worksheetId] } set matrixList [Excel GetMatrixValues $worksheetId $row1 $col1 $row2 $col2] set row 1 foreach rowList $matrixList { set col [lsearch -exact $rowList $str] if { $col >= 0 } { return [list $row [expr {$col + 1}]] } incr row } return [list] }
SelectAll [::Excel]Top, Main, Index
Select all cells of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
Return value
Returns the cells collection of the selected cells.
See also
proc ::Excel::SelectAll {worksheetId} { # Select all cells of a worksheet. # # worksheetId - Identifier of the worksheet. # # Returns the cells collection of the selected cells. # # See also: CopyWorksheet set appId [Office GetApplicationId $worksheetId] set cellsId [$appId Cells] Cawt Destroy $appId return $cellsId }
SelectCellByIndex [::Excel]Top, Main, Index
Select a cell by its row/column index.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
visSel | If set to true, see the selection in the user interface. Otheriwse the selection is not visible. Optional, default false . |
Return value
Returns the identifier of the cell as a range identifier.
See also
SelectRangeByIndex, AddWorksheet
proc ::Excel::SelectCellByIndex {worksheetId row col {visSel false}} { # Select a cell by its row/column index. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # visSel - If set to true, see the selection in the user interface. # Otheriwse the selection is not visible. # # Returns the identifier of the cell as a range identifier. # # See also: SelectRangeByIndex AddWorksheet return [Excel SelectRangeByIndex $worksheetId $row $col $row $col $visSel] }
SelectRangeByIndex [::Excel]Top, Main, Index
Select a range by specifying a numeric cell range.
Parameters
worksheetId | Identifier of the worksheet. |
row1 | Row number of upper-left corner of the cell range. |
col1 | Column number of upper-left corner of the cell range. |
row2 | Row number of lower-right corner of the cell range. |
col2 | Column number of lower-right corner of the cell range. |
visSel | If set to true, see the selection in the user interface. Otherwise the selection is not visible. Optional, default false . |
Return value
Returns the range identifier of the cell range.
See also
SelectRangeByString, SelectCellByIndex, GetCellRange
proc ::Excel::SelectRangeByIndex {worksheetId row1 col1 row2 col2 {visSel false}} { # Select a range by specifying a numeric cell range. # # worksheetId - Identifier of the worksheet. # row1 - Row number of upper-left corner of the cell range. # col1 - Column number of upper-left corner of the cell range. # row2 - Row number of lower-right corner of the cell range. # col2 - Column number of lower-right corner of the cell range. # visSel - If set to true, see the selection in the user interface. # Otherwise the selection is not visible. # # Returns the range identifier of the cell range. # # See also: SelectRangeByString SelectCellByIndex GetCellRange set rangeStr [Excel GetCellRange $row1 $col1 $row2 $col2] return [Excel SelectRangeByString $worksheetId $rangeStr $visSel] }
SelectRangeByString [::Excel]Top, Main, Index
Select a range by specifying an Excel range string in A1 notation.
Parameters
worksheetId | Identifier of the worksheet. |
rangeStr | String specifying a cell range, ex. A8:C10 . |
visSel | If set to true, see the selection in the user interface. Otherwise the selection is not visible. Optional, default false . |
Return value
Returns the range identifier of the cell range.
See also
SelectRangeByIndex, GetCellRange
proc ::Excel::SelectRangeByString {worksheetId rangeStr {visSel false}} { # Select a range by specifying an Excel range string in A1 notation. # # worksheetId - Identifier of the worksheet. # rangeStr - String specifying a cell range, ex. `A8:C10`. # visSel - If set to true, see the selection in the user interface. # Otherwise the selection is not visible. # # Returns the range identifier of the cell range. # # See also: SelectRangeByIndex GetCellRange set cellsId [Excel GetCellsId $worksheetId] set rangeId [$cellsId Range $rangeStr] if { $visSel } { $rangeId Select } Cawt Destroy $cellsId return $rangeId }
SetCellValue [::Excel]Top, Main, Index
Set the value of a cell.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
val | String value of the cell. |
fmt | Format of the cell. Possible values: text , int , real . Optional, default text . |
subFmt | Formatting option of the floating-point value (see SetRangeFormat). Optional, default "" . |
Description
The value to be inserted is interpreted either as string, integer or floating-point number according to the formats specified in $fmt
and $subFmt
.
Return value
Returns no value.
See also
GetCellValue, SetRowValues, SetMatrixValues
proc ::Excel::SetCellValue {worksheetId row col val {fmt text} {subFmt {}}} { # Set the value of a cell. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # val - String value of the cell. # fmt - Format of the cell. Possible values: `text`, `int`, `real`. # subFmt - Formatting option of the floating-point value (see [SetRangeFormat]). # # The value to be inserted is interpreted either as string, integer or # floating-point number according to the formats specified in $fmt and $subFmt. # # Returns no value. # # See also: GetCellValue SetRowValues SetMatrixValues set cellsId [Excel GetCellsId $worksheetId] set cellId [Excel GetCellIdByIndex $worksheetId $row $col] SetRangeFormat $cellId $fmt $subFmt if { $fmt eq "text" } { $cellsId Item [expr {int($row)}] [expr {int($col)}] [Cawt TclString $val] } elseif { $fmt eq "int" } { $cellsId Item [expr {int($row)}] [expr {int($col)}] [expr {int($val)}] } elseif { $fmt eq "real" } { $cellsId Item [expr {int($row)}] [expr {int($col)}] [expr {double($val)}] } else { error "SetCellValue: Unknown format $fmt" } Cawt Destroy $cellId Cawt Destroy $cellsId }
SetChartMaxScale [::Excel]Top, Main, Index
Set the maximum scale of an axis of a chart.
Parameters
chartId | Identifier of the chart. |
axisName | Name of axis. Possible values: x or y . |
value | Scale value. |
Return value
Returns no value.
See also
SetChartMinScale, SetChartScale, SetChartObjSize
proc ::Excel::SetChartMaxScale {chartId axisName value} { # Set the maximum scale of an axis of a chart. # # chartId - Identifier of the chart. # axisName - Name of axis. Possible values: `x` or `y`. # value - Scale value. # # Returns no value. # # See also: SetChartMinScale SetChartScale SetChartObjSize if { $axisName eq "x" || $axisName eq "X" } { set axis [$chartId -with { Axes } Item $::Excel::xlPrimary] } else { set axis [$chartId -with { Axes } Item $::Excel::xlSecondary] } $axis MaximumScale [expr {$value}] Cawt Destroy $axis }
SetChartMinScale [::Excel]Top, Main, Index
Set the minimum scale of an axis of a chart.
Parameters
chartId | Identifier of the chart. |
axisName | Name of axis. Possible values: x or y . |
value | Scale value. |
Return value
Returns no value.
See also
SetChartMaxScale, SetChartScale, SetChartObjSize
proc ::Excel::SetChartMinScale {chartId axisName value} { # Set the minimum scale of an axis of a chart. # # chartId - Identifier of the chart. # axisName - Name of axis. Possible values: `x` or `y`. # value - Scale value. # # Returns no value. # # See also: SetChartMaxScale SetChartScale SetChartObjSize if { $axisName eq "x" || $axisName eq "X" } { set axis [$chartId -with { Axes } Item $::Excel::xlPrimary] } else { set axis [$chartId -with { Axes } Item $::Excel::xlSecondary] } $axis MinimumScale [expr {$value}] Cawt Destroy $axis }
SetChartObjPosition [::Excel]Top, Main, Index
Set the position of a chart object.
Parameters
chartObjId | Identifier of the chart object. |
left | Left border of the chart object in pixel. |
top | Top border of the chart object in pixel. |
Return value
Returns no value.
See also
PlaceChart, SetChartObjSize, SetChartScale
proc ::Excel::SetChartObjPosition {chartObjId left top} { # Set the position of a chart object. # # chartObjId - Identifier of the chart object. # left - Left border of the chart object in pixel. # top - Top border of the chart object in pixel. # # Returns no value. # # See also: PlaceChart SetChartObjSize SetChartScale set chart [$chartObjId Parent] $chart Left $left $chart Top $top Cawt Destroy $chart }
SetChartObjSize [::Excel]Top, Main, Index
Set the size of a chart object.
Parameters
chartObjId | Identifier of the chart object. |
width | Width of the chart object in pixel. |
height | Height of the chart object in pixel. |
Return value
Returns no value.
See also
PlaceChart, SetChartObjPosition, SetChartScale
proc ::Excel::SetChartObjSize {chartObjId width height} { # Set the size of a chart object. # # chartObjId - Identifier of the chart object. # width - Width of the chart object in pixel. # height - Height of the chart object in pixel. # # Returns no value. # # See also: PlaceChart SetChartObjPosition SetChartScale # This is also an Excel mystery. After setting the width and height # to the correct size (i.e. use width and height unchanged), Excel # says, it has changed the shape to the correct size. # But the diagram as displayed and also the exported bitmap has a # size 4/3 greater than expected. # We correct for that discrepancy here by multiplying with 3/4. set chart [$chartObjId Parent] $chart Width [expr {$width * 0.75}] $chart Height [expr {$height * 0.75}] Cawt Destroy $chart }
SetChartScale [::Excel]Top, Main, Index
Set the minimum and maximum scale of both axes of a chart.
Parameters
chartId | Identifier of the chart. |
xmin | Minimum scale value of x axis. |
xmax | Maximum scale value of x axis. |
ymin | Minimum scale value of y axis. |
ymax | Maximum scale value of y axis. |
Return value
Returns no value.
See also
SetChartMinScale, SetChartMaxScale, SetChartObjSize
proc ::Excel::SetChartScale {chartId xmin xmax ymin ymax} { # Set the minimum and maximum scale of both axes of a chart. # # chartId - Identifier of the chart. # xmin - Minimum scale value of x axis. # xmax - Maximum scale value of x axis. # ymin - Minimum scale value of y axis. # ymax - Maximum scale value of y axis. # # Returns no value. # # See also: SetChartMinScale SetChartMaxScale SetChartObjSize Excel SetChartMinScale $chartId "x" $xmin Excel SetChartMaxScale $chartId "x" $xmax Excel SetChartMinScale $chartId "y" $ymin Excel SetChartMaxScale $chartId "y" $ymax }
SetChartSize [::Excel]Top, Main, Index
Obsolete: Replaced with SetChartObjSize in version 1.0.1
Parameters
worksheetId | Not documented. |
chartId | Not documented. |
width | Not documented. |
height | Not documented. |
proc ::Excel::SetChartSize {worksheetId chartId width height} { # Obsolete: Replaced with [SetChartObjSize] in version 1.0.1 Excel SetChartObjSize $worksheetId $chartId $width $height }
SetChartSourceByIndex [::Excel]Top, Main, Index
Set the cell range for the source of a chart.
Parameters
chartId | Identifier of the chart. |
worksheetId | Identifier of the worksheet. |
row1 | Row number of upper-left corner of the cell range. |
col1 | Column number of upper-left corner of the cell range. |
row2 | Row number of lower-right corner of the cell range. |
col2 | Column number of lower-right corner of the cell range. |
type | Value of enumeration type Enum::XlRowCol. Optional, default xlColumns . |
Return value
Returns no value.
See also
CreateChart, SetChartTitle, SetChartScale
proc ::Excel::SetChartSourceByIndex {chartId worksheetId row1 col1 row2 col2 {type xlColumns}} { # Set the cell range for the source of a chart. # # chartId - Identifier of the chart. # worksheetId - Identifier of the worksheet. # row1 - Row number of upper-left corner of the cell range. # col1 - Column number of upper-left corner of the cell range. # row2 - Row number of lower-right corner of the cell range. # col2 - Column number of lower-right corner of the cell range. # type - Value of enumeration type [Enum::XlRowCol]. # # Returns no value. # # See also: CreateChart SetChartTitle SetChartScale set rangeId [Excel SelectRangeByIndex $worksheetId $row1 $col1 $row2 $col2] $chartId SetSourceData $rangeId [Excel GetEnum $type] Cawt Destroy $rangeId }
SetChartTicks [::Excel]Top, Main, Index
Set the tick spacing of an axis of a chart.
Parameters
chartId | Identifier of the chart. |
axisName | Name of axis. Possible values: x or y . |
tickMarkSpacing | Spacing of tick marks. Optional, default "" . |
tickLabelSpacing | Spacing of tick labels. Optional, default "" . |
Description
If spacing values are not specified or the emtpy string, the corresponding spacing uses the default values, which are automatically determined by Excel.
Return value
Returns no value.
See also
SetChartMaxScale, SetChartScale, SetChartObjSize
proc ::Excel::SetChartTicks {chartId axisName {tickMarkSpacing {}} {tickLabelSpacing {}}} { # Set the tick spacing of an axis of a chart. # # chartId - Identifier of the chart. # axisName - Name of axis. Possible values: `x` or `y`. # tickMarkSpacing - Spacing of tick marks. # tickLabelSpacing - Spacing of tick labels. # # If spacing values are not specified or the emtpy string, the # corresponding spacing uses the default values, which are automatically # determined by Excel. # # Returns no value. # # See also: SetChartMaxScale SetChartScale SetChartObjSize if { $axisName eq "x" || $axisName eq "X" } { set axis [$chartId -with { Axes } Item $::Excel::xlPrimary] } else { set axis [$chartId -with { Axes } Item $::Excel::xlSecondary] } if { $tickMarkSpacing ne "" } { $axis TickMarkSpacing [expr {int($tickMarkSpacing)}] } if { $tickLabelSpacing ne "" } { $axis TickLabelSpacing [expr {int($tickLabelSpacing)}] } Cawt Destroy $axis }
SetChartTitle [::Excel]Top, Main, Index
Set the title of a chart.
Parameters
chartId | Identifier of the chart. |
title | Name of the chart title. |
Return value
Returns no value.
See also
SetChartMinScale, SetChartScale, CreateChart
proc ::Excel::SetChartTitle {chartId title} { # Set the title of a chart. # # chartId - Identifier of the chart. # title - Name of the chart title. # # Returns no value. # # See also: SetChartMinScale SetChartScale CreateChart if { $title eq "" } { $chartId HasTitle [Cawt TclBool false] } else { $chartId HasTitle [Cawt TclBool true] $chartId -with { ChartTitle Characters } Text $title } }
SetColumnsWidth [::Excel]Top, Main, Index
Set the width of a range of columns.
Parameters
worksheetId | Identifier of the worksheet. |
startCol | Range start column number. Column numbering starts with 1. |
endCol | Range end column number. Column numbering starts with 1. |
width | A positive value specifies the column's width in average-size characters of the widget's font. A value of zero specifies that the column's width fits automatically the width of all elements in the column. Optional, default 0 . |
Return value
Returns no value.
See also
SetColumnWidth, ColumnCharToInt
proc ::Excel::SetColumnsWidth {worksheetId startCol endCol {width 0}} { # Set the width of a range of columns. # # worksheetId - Identifier of the worksheet. # startCol - Range start column number. Column numbering starts with 1. # endCol - Range end column number. Column numbering starts with 1. # width - A positive value specifies the column's width in average-size characters # of the widget's font. A value of zero specifies that the column's width # fits automatically the width of all elements in the column. # # Returns no value. # # See also: SetColumnWidth ColumnCharToInt for { set c $startCol } { $c <= $endCol } { incr c } { Excel SetColumnWidth $worksheetId $c $width } }
SetColumnValues [::Excel]Top, Main, Index
Insert column values from a Tcl list.
Parameters
worksheetId | Identifier of the worksheet. |
col | Column number. Column numbering starts with 1. |
valList | List of values to be inserted. |
startRow | Row number of insertion start. Row numbering starts with 1. Optional, default 1 . |
numVals | If negative or zero, all list values are inserted. If positive, $numVals rows are filled with the list values (starting at list index 0). Optional, default 0 . |
Return value
Returns no value.
See also
GetColumnValues, SetRowValues, SetCellValue, ColumnCharToInt
proc ::Excel::SetColumnValues {worksheetId col valList {startRow 1} {numVals 0}} { # Insert column values from a Tcl list. # # worksheetId - Identifier of the worksheet. # col - Column number. Column numbering starts with 1. # valList - List of values to be inserted. # startRow - Row number of insertion start. Row numbering starts with 1. # numVals - If negative or zero, all list values are inserted. # If positive, $numVals rows are filled with the list values # (starting at list index 0). # # Returns no value. # # See also: GetColumnValues SetRowValues SetCellValue ColumnCharToInt set len [llength $valList] if { $numVals > 0 } { if { $numVals < $len } { set len $numVals } } for { set i 0 } { $i < $len } { incr i } { lappend valListList [list [lindex $valList $i]] } set cellId [Excel SelectRangeByIndex $worksheetId $startRow $col [expr {$startRow + $len - 1}] $col] Excel SetRangeValues $cellId $valListList Cawt Destroy $cellId }
SetColumnWidth [::Excel]Top, Main, Index
Set the width of a column.
Parameters
worksheetId | Identifier of the worksheet. |
col | Column number. Column numbering starts with 1. |
width | A positive value specifies the column's width in average-size characters of the widget's font. A value of zero specifies that the column's width fits automatically the width of all elements in the column. Optional, default 0 . |
Return value
Returns no value.
See also
SetColumnsWidth, ColumnCharToInt
proc ::Excel::SetColumnWidth {worksheetId col {width 0}} { # Set the width of a column. # # worksheetId - Identifier of the worksheet. # col - Column number. Column numbering starts with 1. # width - A positive value specifies the column's width in average-size characters # of the widget's font. A value of zero specifies that the column's width # fits automatically the width of all elements in the column. # # Returns no value. # # See also: SetColumnsWidth ColumnCharToInt set cell [Excel SelectCellByIndex $worksheetId 1 $col] set curCol [$cell EntireColumn] if { $width == 0 } { $curCol -with { Columns } AutoFit } else { $curCol ColumnWidth $width } Cawt Destroy $curCol Cawt Destroy $cell }
SetCommentDisplayMode [::Excel]Top, Main, Index
Set the global display mode of comments.
Parameters
appId | Identifier of the Excel instance. |
showComment | If set to true, show the comments. Otherwise do not show the comments. Optional, default false . |
showIndicator | If set to true, show an indicator for the comments. Otherwise do not show an indicator. Optional, default true . |
Return value
Returns no value.
See also
SetRangeComment, SetCommentSize, GetCellComment
proc ::Excel::SetCommentDisplayMode {appId {showComment false} {showIndicator true}} { # Set the global display mode of comments. # # appId - Identifier of the Excel instance. # showComment - If set to true, show the comments. # Otherwise do not show the comments. # showIndicator - If set to true, show an indicator for the comments. # Otherwise do not show an indicator. # # Returns no value. # # See also: SetRangeComment SetCommentSize GetCellComment if { $showComment && $showIndicator } { $appId DisplayCommentIndicator $::Excel::xlCommentAndIndicator } elseif { $showIndicator } { $appId DisplayCommentIndicator $::Excel::xlCommentIndicatorOnly } else { $appId DisplayCommentIndicator $::Excel::xlNoIndicator } }
SetCommentSize [::Excel]Top, Main, Index
Set the shape size of a comment.
Parameters
commentId | Identifier of the comment. |
width | Width of the comment. |
height | Height of the comment. |
Description
The size values may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
Return value
Returns no value.
See also
SetRangeComment, SetCommentDisplayMode, GetCellComment
proc ::Excel::SetCommentSize {commentId width height} { # Set the shape size of a comment. # # commentId - Identifier of the comment. # width - Width of the comment. # height - Height of the comment. # # The size values may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # # Returns no value. # # See also: SetRangeComment SetCommentDisplayMode GetCellComment $commentId -with { Shape } LockAspectRatio [Cawt TclInt 0] $commentId -with { Shape } Height [Cawt ValueToPoints $width] $commentId -with { Shape } Width [Cawt ValueToPoints $height] }
SetCsvSeparatorChar [::Excel]Top, Main, Index
Set the column separator character.
Parameters
separatorChar | The character used as the column separator. Optional, default ; . |
Return value
Returns no value.
proc ::Excel::SetCsvSeparatorChar {{separatorChar {;}}} { # Set the column separator character. # # separatorChar - The character used as the column separator. # # Returns no value. variable sSepChar set sSepChar $separatorChar }
SetHeaderRow [::Excel]Top, Main, Index
Insert row values from a Tcl list and format as a header row.
Parameters
worksheetId | Identifier of the worksheet. |
headerList | List of values to be inserted as header. |
row | Row number. Row numbering starts with 1. Optional, default 1 . |
startCol | Column number of insertion start. Column numbering starts with 1. Optional, default 1 . |
Return value
Returns no value. If $headerList
is an empty list, an error is thrown.
See also
proc ::Excel::SetHeaderRow {worksheetId headerList {row 1} {startCol 1}} { # Insert row values from a Tcl list and format as a header row. # # worksheetId - Identifier of the worksheet. # headerList - List of values to be inserted as header. # row - Row number. Row numbering starts with 1. # startCol - Column number of insertion start. Column numbering starts with 1. # # Returns no value. If $headerList is an empty list, an error is thrown. # # See also: SetRowValues FormatHeaderRow set len [llength $headerList] Excel SetRowValues $worksheetId $row $headerList $startCol $len Excel FormatHeaderRow $worksheetId $row $startCol [expr {$startCol + $len -1}] }
SetHyperlink [::Excel]Top, Main, Index
Insert a hyperlink into a cell.
Parameters
worksheetId | Identifier of the worksheet the hyperlink is inserted to. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
link | URL of the hyperlink. |
textDisplay | Text to be displayed instead of the URL. Optional, default "" . |
Description
URL's are specified as strings:
file://myLinkedFile
specifies a link to a local file.http://myLinkedWebpage
specifies a link to a web address.
Return value
Returns no value.
See also
AddWorksheet, SetHyperlinkToFile, SetHyperlinkToCell, SetLinkToCell
proc ::Excel::SetHyperlink {worksheetId row col link {textDisplay {}}} { # Insert a hyperlink into a cell. # # worksheetId - Identifier of the worksheet the hyperlink is inserted to. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # link - URL of the hyperlink. # textDisplay - Text to be displayed instead of the URL. # # URL's are specified as strings: # * `file://myLinkedFile` specifies a link to a local file. # * `http://myLinkedWebpage` specifies a link to a web address. # # Returns no value. # # See also: AddWorksheet SetHyperlinkToFile SetHyperlinkToCell SetLinkToCell variable excelVersion if { $textDisplay eq "" } { set textDisplay $link } set rangeId [Excel SelectCellByIndex $worksheetId $row $col] set hyperId [$worksheetId Hyperlinks] # Add(Anchor As Object, Address As String, [SubAddress], # [ScreenTip], [TextToDisplay]) As Object if { $excelVersion eq "8.0" } { $hyperId -callnamedargs Add Anchor $rangeId Address $link } else { $hyperId -callnamedargs Add Anchor $rangeId Address $link TextToDisplay $textDisplay } Cawt Destroy $hyperId Cawt Destroy $rangeId }
SetHyperlinkToCell [::Excel]Top, Main, Index
Insert a hyperlink to a cell into another cell.
Parameters
srcWorksheetId | Identifier of the worksheet the link points to. |
srcRow | Source row number. Row numbering starts with 1. |
srcCol | Source column number. Column numbering starts with 1. |
destWorksheetId | Identifier of the worksheet the link is inserted into. |
destRow | Destination row number. Row numbering starts with 1. |
destCol | Destination column number. Column numbering starts with 1. |
textDisplay | Text to be displayed instead of the hyperlink. Optional, default "" . |
Return value
Returns no value.
See also
AddWorksheet, SetHyperlinkToFile, SetHyperlink, SetLinkToCell
proc ::Excel::SetHyperlinkToCell {srcWorksheetId srcRow srcCol destWorksheetId destRow destCol {textDisplay {}}} { # Insert a hyperlink to a cell into another cell. # # srcWorksheetId - Identifier of the worksheet the link points to. # srcRow - Source row number. Row numbering starts with 1. # srcCol - Source column number. Column numbering starts with 1. # destWorksheetId - Identifier of the worksheet the link is inserted into. # destRow - Destination row number. Row numbering starts with 1. # destCol - Destination column number. Column numbering starts with 1. # textDisplay - Text to be displayed instead of the hyperlink. # # Returns no value. # # See also: AddWorksheet SetHyperlinkToFile SetHyperlink SetLinkToCell set rangeId [Excel SelectCellByIndex $destWorksheetId $destRow $destCol] set hyperId [$destWorksheetId Hyperlinks] set subAddress [format "'%s'!%s%d" [Excel GetWorksheetName $srcWorksheetId] [Excel ColumnIntToChar $srcCol] $srcRow] if { $textDisplay eq "" } { set textDisplay $subAddress } # Add(Anchor As Object, Address As String, [SubAddress], # [ScreenTip], [TextToDisplay]) As Object $hyperId -callnamedargs Add Anchor $rangeId Address "" SubAddress $subAddress TextToDisplay $textDisplay Cawt Destroy $hyperId Cawt Destroy $rangeId }
SetHyperlinkToFile [::Excel]Top, Main, Index
Insert a hyperlink to a file into a cell.
Parameters
worksheetId | Identifier of the worksheet the hyperlink is inserted to. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
fileName | Path name of the linked file. |
textDisplay | Text to be displayed instead of the file name. Optional, default "" . |
Return value
Returns no value.
See also
AddWorksheet, SetHyperlinkToCell, SetHyperlink, SetLinkToCell
proc ::Excel::SetHyperlinkToFile {worksheetId row col fileName {textDisplay {}}} { # Insert a hyperlink to a file into a cell. # # worksheetId - Identifier of the worksheet the hyperlink is inserted to. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # fileName - Path name of the linked file. # textDisplay - Text to be displayed instead of the file name. # # Returns no value. # # See also: AddWorksheet SetHyperlinkToCell SetHyperlink SetLinkToCell if { $textDisplay eq "" } { set textDisplay $fileName } set rangeId [Excel SelectCellByIndex $worksheetId $row $col] set hyperId [$worksheetId Hyperlinks] if { [file pathtype $fileName] eq "relative" } { set address [format "file:./%s" [file nativename $fileName]] } else { set address [format "file://%s" [file nativename [file normalize $fileName]]] set appId [Office GetApplicationId $worksheetId] $appId -with { DefaultWebOptions } UpdateLinksOnSave [Cawt TclBool false] Cawt Destroy $appId } # Add(Anchor As Object, Address As String, [SubAddress], # [ScreenTip], [TextToDisplay]) As Object $hyperId -callnamedargs Add Anchor $rangeId Address $address TextToDisplay $textDisplay Cawt Destroy $hyperId Cawt Destroy $rangeId }
SetLinkToCell [::Excel]Top, Main, Index
Insert an internal link to a cell into another cell.
Parameters
srcWorksheetId | Identifier of the worksheet the link points to. |
srcRow | Source row number. Row numbering starts with 1. |
srcCol | Source column number. Column numbering starts with 1. |
destWorksheetId | Identifier of the worksheet the link is inserted to. |
destRow | Destination row number. Row numbering starts with 1. |
destCol | Destination column number. Column numbering starts with 1. |
Description
Note, that the number format of the source cell is used as number format of the destination cell.
Return value
Returns no value.
See also
SetHyperlinkToCell, SetHyperlinkToFile, SetHyperlink
proc ::Excel::SetLinkToCell {srcWorksheetId srcRow srcCol destWorksheetId destRow destCol} { # Insert an internal link to a cell into another cell. # # srcWorksheetId - Identifier of the worksheet the link points to. # srcRow - Source row number. Row numbering starts with 1. # srcCol - Source column number. Column numbering starts with 1. # destWorksheetId - Identifier of the worksheet the link is inserted to. # destRow - Destination row number. Row numbering starts with 1. # destCol - Destination column number. Column numbering starts with 1. # # Note, that the number format of the source cell is used as number format of the # destination cell. # # Returns no value. # # See also: SetHyperlinkToCell SetHyperlinkToFile SetHyperlink set srcRangeId [Excel SelectCellByIndex $srcWorksheetId $srcRow $srcCol] set destRangeId [Excel SelectCellByIndex $destWorksheetId $destRow $destCol] $destRangeId NumberFormat [$srcRangeId NumberFormat] $srcRangeId Copy $destRangeId Select $destWorksheetId -callnamedargs Paste Link [Cawt TclBool true] Cawt Destroy $srcRangeId Cawt Destroy $destRangeId }
SetListItemSeparator [::Excel]Top, Main, Index
Set the list item separator used by Excel.
Parameters
separator | The character used as list item separator. |
Description
Use this procedure to overwrite the separator used by Windows.
Return value
Returns no value.
See also
GetListItemSeparator, CreateRangeString
proc ::Excel::SetListItemSeparator {separator} { # Set the list item separator used by Excel. # # separator - The character used as list item separator. # # Use this procedure to overwrite the separator used by Windows. # # Returns no value. # # See also: GetListItemSeparator CreateRangeString variable listItemSeparator set listItemSeparator $separator }
SetMatrixValues [::Excel]Top, Main, Index
Insert matrix values into a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
matrixList | Matrix with table data. |
startRow | Row number of insertion start. Row numbering starts with 1. Optional, default 1 . |
startCol | Column number of insertion start. Column numbering starts with 1. Optional, default 1 . |
Description
The matrix data must be stored as a list of lists. Each sub-list contains the values for the row values. The main (outer) list contains the rows of the matrix.
Example:
{ { R1_C1 R1_C2 R1_C3 } { R2_C1 R2_C2 R2_C3 } }
Return value
Returns no value.
See also
GetMatrixValues, SetRowValues, SetColumnValues
proc ::Excel::SetMatrixValues {worksheetId matrixList {startRow 1} {startCol 1}} { # Insert matrix values into a worksheet. # # worksheetId - Identifier of the worksheet. # matrixList - Matrix with table data. # startRow - Row number of insertion start. Row numbering starts with 1. # startCol - Column number of insertion start. Column numbering starts with 1. # # The matrix data must be stored as a list of lists. Each sub-list contains # the values for the row values. # The main (outer) list contains the rows of the matrix. # # Example: # { { R1_C1 R1_C2 R1_C3 } { R2_C1 R2_C2 R2_C3 } } # # Returns no value. # # See also: GetMatrixValues SetRowValues SetColumnValues set numRows [llength $matrixList] if { $numRows == 0 } { return } set numCols [llength [lindex $matrixList 0]] if { $numCols == 0 } { return } set cellId [Excel SelectRangeByIndex $worksheetId $startRow $startCol [expr {$startRow + $numRows -1}] [expr {$startCol + $numCols -1}]] Excel SetRangeValues $cellId $matrixList Cawt Destroy $cellId }
SetNamedRange [::Excel]Top, Main, Index
Set the name of a cell range.
Parameters
rangeId | Identifier of the cell range. |
rangeName | Name of the cell range. Must not contain spaces. |
useWorksheet | If set to true, set the name at the worksheet level. Otherwise set it at the workbook level. Optional, default true . |
Return value
Returns no value.
See also
GetNamedRange, GetNamedRangeNames
proc ::Excel::SetNamedRange {rangeId rangeName {useWorksheet true}} { # Set the name of a cell range. # # rangeId - Identifier of the cell range. # rangeName - Name of the cell range. Must not contain spaces. # useWorksheet - If set to true, set the name at the worksheet level. # Otherwise set it at the workbook level. # # Returns no value. # # See also: GetNamedRange GetNamedRangeNames set worksheetId [$rangeId Parent] set worksheetName [Excel GetWorksheetName $worksheetId] Cawt Destroy $worksheetId if { $useWorksheet } { set rangeName [format "%s!%s" $worksheetName $rangeName] } $rangeId Name $rangeName }
SetRangeBorder [::Excel]Top, Main, Index
Set the attributes of one border of a cell range.
Parameters
rangeId | Identifier of the cell range. |
side | Value of enumeration type Enum::XlBordersIndex. Typical values: xlEdgeLeft , xlEdgeTop , xlEdgeBottom , xlEdgeRight . |
weight | Value of enumeration type Enum::XlBorderWeight. Typical values: xlThin , xlMedium , xlThick . Optional, default xlThin . |
lineStyle | Value of enumeration type Enum::XlLineStyle. Typical values: xlContinuous , xlDash , xlDot . Optional, default xlContinuous . |
args | Border color. |
Description
Color value may be specified in a format acceptable by procedure ::Cawt::GetColor, i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values.
If no border color is specified, it is set to black.
Return value
Returns no value.
See also
SetRangeBorders, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeBorder {rangeId side {weight xlThin} {lineStyle xlContinuous} args} { # Set the attributes of one border of a cell range. # # rangeId - Identifier of the cell range. # side - Value of enumeration type [Enum::XlBordersIndex]. # Typical values: `xlEdgeLeft`, `xlEdgeTop`, `xlEdgeBottom`, `xlEdgeRight`. # weight - Value of enumeration type [Enum::XlBorderWeight]. # Typical values: `xlThin`, `xlMedium`, `xlThick`. # lineStyle - Value of enumeration type [Enum::XlLineStyle]. # Typical values: `xlContinuous`, `xlDash`, `xlDot`. # args - Border color. # # Color value may be specified in a format acceptable by procedure [::Cawt::GetColor], # i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values. # # If no border color is specified, it is set to black. # # Returns no value. # # See also: SetRangeBorders SelectRangeByIndex SelectRangeByString if { [llength $args] == 0 } { set borderColor [Cawt GetColor "black"] } else { set borderColor [Cawt GetColor {*}$args] } set borders [$rangeId Borders] set sideInt [Excel GetEnum $side] set border [$borders Item $sideInt] $border Weight [Excel GetEnum $weight] $border LineStyle [Excel GetEnum $lineStyle] $border Color $borderColor Cawt Destroy $border Cawt Destroy $borders }
SetRangeBorders [::Excel]Top, Main, Index
Set the attributes of all borders of a cell range.
Parameters
rangeId | Identifier of the cell range. |
weight | Value of enumeration type Enum::XlBorderWeight. Typical values: xlThin , xlMedium , xlThick . Optional, default xlThin . |
lineStyle | Value of enumeration type Enum::XlLineStyle. Typical values: xlContinuous , xlDash , xlDot . Optional, default xlContinuous . |
r | Red component of the border color. Optional, default 0 . |
g | Green component of the border color. Optional, default 0 . |
b | Blue component of the border color. Optional, default 0 . |
Description
The r, g and b values are specified as integers in the range [0, 255].
Return value
Returns no value.
See also
SetRangeBorder, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeBorders {rangeId {weight xlThin} {lineStyle xlContinuous} {r 0} {g 0} {b 0}} { # Set the attributes of all borders of a cell range. # # rangeId - Identifier of the cell range. # weight - Value of enumeration type [Enum::XlBorderWeight]. # Typical values: `xlThin`, `xlMedium`, `xlThick`. # lineStyle - Value of enumeration type [Enum::XlLineStyle]. # Typical values: `xlContinuous`, `xlDash`, `xlDot`. # r - Red component of the border color. # g - Green component of the border color. # b - Blue component of the border color. # # The r, g and b values are specified as integers in the # range \[0, 255\]. # # Returns no value. # # See also: SetRangeBorder SelectRangeByIndex SelectRangeByString Excel SetRangeBorder $rangeId xlEdgeLeft $weight $lineStyle $r $g $b Excel SetRangeBorder $rangeId xlEdgeRight $weight $lineStyle $r $g $b Excel SetRangeBorder $rangeId xlEdgeBottom $weight $lineStyle $r $g $b Excel SetRangeBorder $rangeId xlEdgeTop $weight $lineStyle $r $g $b }
SetRangeComment [::Excel]Top, Main, Index
Set the comment text of a cell range.
Parameters
rangeId | Identifier of the cell range. |
comment | Comment text. |
imgFileName | File name of an image used as comment background. Optional, default "" . |
addUserName | Automatically add user name before comment text. Optional, default true . |
visible | If set to true, show the comment window. Otherwise hide the comment window. Optional, default false . |
Description
Note, that an already existing comment is overwritten.
A comment may be used as a mouse-over tooltip, if parameter showComments of SetCommentDisplayMode is set to false. For a selection tooltip, use SetRangeTooltip.
Return value
Returns the comment identifier.
See also
SetCommentDisplayMode, SetCommentSize, GetCellComment, SelectRangeByIndex, SelectRangeByString, SetRangeTooltip, ::Office::GetUserName
proc ::Excel::SetRangeComment {rangeId comment {imgFileName {}} {addUserName true} {visible false}} { # Set the comment text of a cell range. # # rangeId - Identifier of the cell range. # comment - Comment text. # imgFileName - File name of an image used as comment background. # addUserName - Automatically add user name before comment text. # visible - If set to true, show the comment window. # Otherwise hide the comment window. # # Note, that an already existing comment is overwritten. # # A comment may be used as a mouse-over tooltip, if parameter showComments of # [SetCommentDisplayMode] is set to false. For a selection tooltip, use [SetRangeTooltip]. # # Returns the comment identifier. # # See also: SetCommentDisplayMode SetCommentSize GetCellComment # SelectRangeByIndex SelectRangeByString SetRangeTooltip ::Office::GetUserName set commentId [$rangeId Comment] if { ! [Cawt IsComObject $commentId] } { set commentId [$rangeId AddComment] } $commentId Visible [Cawt TclBool $visible] if { $addUserName } { set userName [Office GetUserName [$commentId Application]] set msg [format "%s:\n%s" $userName $comment] } else { set msg $comment } $commentId Text $msg if { $imgFileName ne "" } { set fileName [file nativename [file normalize $imgFileName]] $commentId -with { Shape Fill } UserPicture $fileName } return $commentId }
SetRangeFillColor [::Excel]Top, Main, Index
Set the fill color of a cell range.
Parameters
rangeId | Identifier of the cell range. |
args | Background fill color. |
Description
Color value may be specified in a format acceptable by procedure ::Cawt::GetColor, i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values.
Return value
Returns no value.
See also
SetRangeTextColor, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeFillColor {rangeId args} { # Set the fill color of a cell range. # # rangeId - Identifier of the cell range. # args - Background fill color. # # Color value may be specified in a format acceptable by procedure [::Cawt::GetColor], # i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values. # # Returns no value. # # See also: SetRangeTextColor SelectRangeByIndex SelectRangeByString set color [Cawt GetColor {*}$args] $rangeId -with { Interior } Color $color $rangeId -with { Interior } Pattern $::Excel::xlSolid }
SetRangeFontAttributes [::Excel]Top, Main, Index
Set the font attibutes of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
args | Options described below. |
-bold <bool> | Switch attribute on or off. |
-fontstyle <string> | Font style as string. |
-italic <bool> | Switch attribute on or off. |
-name <string> | Font name as string. |
-outlinefont <bool> | Switch attribute on or off. |
-shadow <bool> | Switch attribute on or off. |
-size <size> | Font size in points. |
-strikethrough <bool> | Switch attribute on or off. |
-subscript <bool> | Switch attribute on or off. |
-superscript <bool> | Switch attribute on or off. |
-themecolor <enum> | Enumeration of type Enum::XlThemeColor. |
-themefont <enum> | Enumeration of type Enum::XlThemeFont. |
-tintandshade <float> | Floating point number from -1 (darkest) to 1 (lightest). Zero is neutral. |
-underline <enum> | Enumeration of type Enum::XlUnderlineStyle |
Description
The size value may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
Example:
SetRangeFontAttributes $rangeId -size 2c -bold true sets the font size to 2 centimeters and the enables the Bold attribute.
Return value
Returns no value.
See also
GetRangeFontAttributes, SelectRangeByIndex, SetRangeFontBold, SetRangeFontItalic, SetRangeFontName, SetRangeFontSize, SetRangeFontSubscript, SetRangeFontSuperscript, SetRangeFontUnderline
proc ::Excel::SetRangeFontAttributes {rangeId args} { # Set the font attibutes of a cell or character range. # # rangeId - Identifier of the cell range. # args - Options described below. # # -bold <bool> - Switch attribute on or off. # -fontstyle <string> - Font style as string. # -italic <bool> - Switch attribute on or off. # -name <string> - Font name as string. # -outlinefont <bool> - Switch attribute on or off. # -size <size> - Font size in points. # -shadow <bool> - Switch attribute on or off. # -strikethrough <bool> - Switch attribute on or off. # -subscript <bool> - Switch attribute on or off. # -superscript <bool> - Switch attribute on or off. # -underline <enum> - Enumeration of type [Enum::XlUnderlineStyle] # -themecolor <enum> - Enumeration of type [Enum::XlThemeColor]. # -themefont <enum> - Enumeration of type [Enum::XlThemeFont]. # -tintandshade <float> - Floating point number from -1 (darkest) to 1 (lightest). Zero is neutral. # # The size value may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # # Example: # SetRangeFontAttributes $rangeId -size 2c -bold true # sets the font size to 2 centimeters and the enables the Bold attribute. # # Returns no value. # # See also: GetRangeFontAttributes SelectRangeByIndex # SetRangeFontBold SetRangeFontItalic SetRangeFontName SetRangeFontSize # SetRangeFontSubscript SetRangeFontSuperscript SetRangeFontUnderline set fontId [$rangeId Font] foreach { key value } $args { if { $value eq "" } { error "SetRangeFontAttributes: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-bold" { $fontId Bold [Cawt TclBool $value] } "-fontstyle" { $fontId FontStyle $value } "-italic" { $fontId Italic [Cawt TclBool $value] } "-name" { $fontId Name $value } "-outlinefont" { $fontId OutlineFont [Cawt TclBool $value] } "-size" { $fontId Size [Cawt ValueToPoints $value] } "-shadow" { $fontId Shadow [Cawt TclBool $value] } "-strikethrough" { $fontId Strikethrough [Cawt TclBool $value] } "-subscript" { $fontId Subscript [Cawt TclBool $value] } "-superscript" { $fontId Superscript [Cawt TclBool $value] } "-underline" { $fontId Underline [Excel GetEnum $value] } "-themecolor" { $fontId ThemeColor [Excel GetEnum $value] } "-themefont" { $fontId ThemeFont [Excel GetEnum $value] } "-tintandshade" { $fontId TintAndShade [expr double( $value )] } default { error "SetRangeFontAttributes: Unknown key \"$key\" specified" } } } Cawt Destroy $fontId }
SetRangeFontBold [::Excel]Top, Main, Index
Set the bold font style of a cell range.
Parameters
rangeId | Identifier of the cell range. |
onOff | If set to true, set bold style on. Otherwise set bold style off. Optional, default true . |
Return value
Returns no value.
See also
GetRangeFontBold, SelectRangeByIndex, SetRangeFontAttributes
proc ::Excel::SetRangeFontBold {rangeId {onOff true}} { # Set the bold font style of a cell range. # # rangeId - Identifier of the cell range. # onOff - If set to true, set bold style on. # Otherwise set bold style off. # # Returns no value. # # See also: GetRangeFontBold SelectRangeByIndex SetRangeFontAttributes $rangeId -with { Font } Bold [Cawt TclBool $onOff] }
SetRangeFontItalic [::Excel]Top, Main, Index
Set the italic font style of a cell range.
Parameters
rangeId | Identifier of the cell range. |
onOff | If set to true, set italic style on. Otherwise set italic style off. Optional, default true . |
Return value
Returns no value.
See also
GetRangeFontItalic, SelectRangeByIndex, SetRangeFontAttributes
proc ::Excel::SetRangeFontItalic {rangeId {onOff true}} { # Set the italic font style of a cell range. # # rangeId - Identifier of the cell range. # onOff - If set to true, set italic style on. # Otherwise set italic style off. # # Returns no value. # # See also: GetRangeFontItalic SelectRangeByIndex SetRangeFontAttributes $rangeId -with { Font } Italic [Cawt TclBool $onOff] }
SetRangeFontName [::Excel]Top, Main, Index
Set the font name of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
fontName | Name of the font as a string. |
Return value
Returns no value.
See also
GetRangeFontName, SelectRangeByIndex, SetRangeFontAttributes
proc ::Excel::SetRangeFontName {rangeId fontName} { # Set the font name of a cell or character range. # # rangeId - Identifier of the cell range. # fontName - Name of the font as a string. # # Returns no value. # # See also: GetRangeFontName SelectRangeByIndex SetRangeFontAttributes $rangeId -with { Font } Name $fontName }
SetRangeFontSize [::Excel]Top, Main, Index
Set the font size of a cell range.
Parameters
rangeId | Identifier of the cell range. |
size | Font size. |
Description
The size value may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
Return value
Returns no value.
See also
GetRangeFontSize, SelectRangeByIndex, SetRangeFontAttributes
proc ::Excel::SetRangeFontSize {rangeId size} { # Set the font size of a cell range. # # rangeId - Identifier of the cell range. # size - Font size. # # The size value may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # # Returns no value. # # See also: GetRangeFontSize SelectRangeByIndex SetRangeFontAttributes $rangeId -with { Font } Size [Cawt ValueToPoints $size] }
SetRangeFontSubscript [::Excel]Top, Main, Index
Set the subscript font style of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
onOff | If set to true, set subscript style on. Otherwise set subscript style off. Optional, default true . |
Return value
Returns no value.
See also
GetRangeFontSubscript, SelectRangeByIndex, SetRangeFontAttributes
proc ::Excel::SetRangeFontSubscript {rangeId {onOff true}} { # Set the subscript font style of a cell or character range. # # rangeId - Identifier of the cell range. # onOff - If set to true, set subscript style on. # Otherwise set subscript style off. # # Returns no value. # # See also: GetRangeFontSubscript SelectRangeByIndex SetRangeFontAttributes $rangeId -with { Font } Subscript [Cawt TclBool $onOff] }
SetRangeFontSuperscript [::Excel]Top, Main, Index
Set the superscript font style of a cell or character range.
Parameters
rangeId | Identifier of the cell range. |
onOff | If set to true, set superscript style on. Otherwise set superscript style off. Optional, default true . |
Return value
Returns no value.
See also
GetRangeFontSuperscript, SelectRangeByIndex, SetRangeFontAttributes
proc ::Excel::SetRangeFontSuperscript {rangeId {onOff true}} { # Set the superscript font style of a cell or character range. # # rangeId - Identifier of the cell range. # onOff - If set to true, set superscript style on. # Otherwise set superscript style off. # # Returns no value. # # See also: GetRangeFontSuperscript SelectRangeByIndex SetRangeFontAttributes $rangeId -with { Font } Superscript [Cawt TclBool $onOff] }
SetRangeFontUnderline [::Excel]Top, Main, Index
Set the underline font style of a cell range.
Parameters
rangeId | Identifier of the cell range. |
style | Value of enumeration type Enum::XlUnderlineStyle. Optional, default xlUnderlineStyleSingle . |
Return value
Returns no value.
See also
GetRangeFontUnderline, SelectRangeByIndex, SetRangeFontAttributes
proc ::Excel::SetRangeFontUnderline {rangeId {style xlUnderlineStyleSingle}} { # Set the underline font style of a cell range. # # rangeId - Identifier of the cell range. # style - Value of enumeration type [Enum::XlUnderlineStyle]. # # Returns no value. # # See also: GetRangeFontUnderline SelectRangeByIndex SetRangeFontAttributes $rangeId -with { Font } Underline [Excel GetEnum $style] }
SetRangeFormat [::Excel]Top, Main, Index
Set the number format of a cell range.
Parameters
rangeId | Identifier of the cell range. |
fmt | Format of the cell range. Possible values: "text", "int", "real". |
subFmt | Sub-format of the cell range. Only valid, if fmt is "real". Then it specifies the number of digits before and after the decimal point. Use the GetNumberFormat procedure for specifying the sub-format. If subFmt is the empty string 2 digits after the decimal point are used. Optional, default "" . |
Description
If parameter $fmt
is not any of the predefined values, it is interpreted as a custom number format specified in Excel style.
Return value
Returns no value.
See also
GetRangeFormat, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeFormat {rangeId fmt {subFmt {}}} { # Set the number format of a cell range. # # rangeId - Identifier of the cell range. # fmt - Format of the cell range. Possible values: "text", "int", "real". # subFmt - Sub-format of the cell range. Only valid, if fmt is "real". Then it # specifies the number of digits before and after the decimal point. # Use the [GetNumberFormat] procedure for specifying the sub-format. # If subFmt is the empty string 2 digits after the decimal point are used. # # If parameter $fmt is not any of the predefined values, it is interpreted as a # custom number format specified in Excel style. # # Returns no value. # # See also: GetRangeFormat SelectRangeByIndex SelectRangeByString if { $fmt eq "text" } { set numberFormat "@" } elseif { $fmt eq "int" } { set numberFormat "0" } elseif { $fmt eq "real" } { if { $subFmt eq "" } { set appId [Office GetApplicationId $rangeId] set subFmt [Excel GetNumberFormat $appId "0" "00"] Cawt Destroy $appId } set numberFormat $subFmt } else { set numberFormat $fmt } $rangeId NumberFormat [Cawt TclString $numberFormat] }
SetRangeHorizontalAlignment [::Excel]Top, Main, Index
Set the horizontal alignment of a cell range.
Parameters
rangeId | Identifier of the cell range. |
align | Value of enumeration type Enum::XlHAlign. |
Return value
Returns no value.
See also
GetRangeHorizontalAlignment, SetRangeVerticalAlignment, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeHorizontalAlignment {rangeId align} { # Set the horizontal alignment of a cell range. # # rangeId - Identifier of the cell range. # align - Value of enumeration type [Enum::XlHAlign]. # # Returns no value. # # See also: GetRangeHorizontalAlignment SetRangeVerticalAlignment # SelectRangeByIndex SelectRangeByString $rangeId HorizontalAlignment [Excel GetEnum $align] }
SetRangeMergeCells [::Excel]Top, Main, Index
Merge/Unmerge a range of cells.
Parameters
rangeId | Identifier of the cell range. |
onOff | If set to true, set cell merge on. Otherwise set cell merge off. Optional, default true . |
Return value
Returns no value.
See also
SetRangeVerticalAlignment, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeMergeCells {rangeId {onOff true}} { # Merge/Unmerge a range of cells. # # rangeId - Identifier of the cell range. # onOff - If set to true, set cell merge on. # Otherwise set cell merge off. # # Returns no value. # # See also: SetRangeVerticalAlignment SelectRangeByIndex SelectRangeByString set appId [Office GetApplicationId $rangeId] Excel::ShowAlerts $appId false $rangeId MergeCells [Cawt TclBool $onOff] Excel::ShowAlerts $appId true Cawt Destroy $appId }
SetRangeTextColor [::Excel]Top, Main, Index
Set the text color of a cell range.
Parameters
rangeId | Identifier of the cell range. |
args | Text color. |
Description
Color value may be specified in a format acceptable by procedure ::Cawt::GetColor, i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values.
Return value
Returns no value.
See also
SetRangeFillColor, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeTextColor {rangeId args} { # Set the text color of a cell range. # # rangeId - Identifier of the cell range. # args - Text color. # # Color value may be specified in a format acceptable by procedure [::Cawt::GetColor], # i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values. # # Returns no value. # # See also: SetRangeFillColor SelectRangeByIndex SelectRangeByString set color [Cawt GetColor {*}$args] $rangeId -with { Font } Color $color }
SetRangeTooltip [::Excel]Top, Main, Index
Set a selection based tooltip for a cell range.
Parameters
rangeId | Identifier of the cell range. |
tooltipMessage | The tooltip message string. |
tooltipTitle | The optional tooltip title string. Optional, default "" . |
Description
The tooltip will be shown, if the cell is selected by the user. It is implemented by using the data validation functionality of Excel. If a mouse-over tooltip is needed, use SetRangeComment.
Return value
Returns the validation identifier.
See also
SelectRangeByIndex, SelectRangeByString, SetRangeComment
proc ::Excel::SetRangeTooltip {rangeId tooltipMessage {tooltipTitle {}}} { # Set a selection based tooltip for a cell range. # # rangeId - Identifier of the cell range. # tooltipMessage - The tooltip message string. # tooltipTitle - The optional tooltip title string. # # The tooltip will be shown, if the cell is selected by the user. It is implemented by using # the data validation functionality of Excel. # If a mouse-over tooltip is needed, use [SetRangeComment]. # # Returns the validation identifier. # # See also: SelectRangeByIndex SelectRangeByString SetRangeComment set validationId [$rangeId Validation] $validationId Add $::Excel::xlValidateInputOnly $validationId InputMessage $tooltipMessage if { $tooltipTitle ne "" } { $validationId InputTitle $tooltipTitle } $validationId ShowInput [Cawt TclBool true] return $validationId }
SetRangeValues [::Excel]Top, Main, Index
Set range values from a matrix.
Parameters
rangeId | Identifier of the cell range. |
matrixList | Matrix with table data. |
Description
The matrix data must be stored as a list of lists. Each sub-list contains the values for the row values. The main (outer) list contains the rows of the matrix.
Example:
{ { R1_C1 R1_C2 R1_C3 } { R2_C1 R2_C2 R2_C3 } }
Return value
Returns no value.
See also
GetRangeValues, SetMatrixValues, SetRowValues, SetColumnValues, SetCellValue
proc ::Excel::SetRangeValues {rangeId matrixList} { # Set range values from a matrix. # # rangeId - Identifier of the cell range. # matrixList - Matrix with table data. # # The matrix data must be stored as a list of lists. Each sub-list contains # the values for the row values. # The main (outer) list contains the rows of the matrix. # # Example: # { { R1_C1 R1_C2 R1_C3 } { R2_C1 R2_C2 R2_C3 } } # # Returns no value. # # See also: GetRangeValues SetMatrixValues SetRowValues SetColumnValues SetCellValue $rangeId Value2 $matrixList }
SetRangeVerticalAlignment [::Excel]Top, Main, Index
Set the vertical alignment of a cell range.
Parameters
rangeId | Identifier of the cell range. |
align | Value of enumeration type Enum::XlVAlign. |
Return value
Returns no value.
See also
SetRangeHorizontalAlignment, SelectRangeByIndex, SelectRangeByString
proc ::Excel::SetRangeVerticalAlignment {rangeId align} { # Set the vertical alignment of a cell range. # # rangeId - Identifier of the cell range. # align - Value of enumeration type [Enum::XlVAlign]. # # Returns no value. # # See also: SetRangeHorizontalAlignment SelectRangeByIndex SelectRangeByString $rangeId VerticalAlignment [Excel GetEnum $align] }
SetRangeWrapText [::Excel]Top, Main, Index
Set the text wrapping mode of a cell range.
Parameters
rangeId | Identifier of the cell range. |
onOff | If set to true, set text wrapping on. Otherwise set text wrapping off. Optional, default true . |
Return value
Returns no value.
See also
GetRangeWrapText, SetRangeHorizontalAlignment, SetRangeTextColor, SelectRangeByIndex
proc ::Excel::SetRangeWrapText {rangeId {onOff true}} { # Set the text wrapping mode of a cell range. # # rangeId - Identifier of the cell range. # onOff - If set to true, set text wrapping on. # Otherwise set text wrapping off. # # Returns no value. # # See also: GetRangeWrapText SetRangeHorizontalAlignment SetRangeTextColor SelectRangeByIndex $rangeId WrapText [Cawt TclBool $onOff] }
SetRowHeight [::Excel]Top, Main, Index
Set the height of a row.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
height | A positive value specifies the row's height. A value of zero specifies that the rows's height fits automatically the height of all elements in the row. Optional, default 0 . |
Description
The height value may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
Return value
Returns no value.
See also
SetRowsHeight, SetColumnWidth, ColumnCharToInt
proc ::Excel::SetRowHeight {worksheetId row {height 0}} { # Set the height of a row. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # height - A positive value specifies the row's height. # A value of zero specifies that the rows's height # fits automatically the height of all elements in the row. # # The height value may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # # Returns no value. # # See also: SetRowsHeight SetColumnWidth ColumnCharToInt set cell [Excel SelectCellByIndex $worksheetId $row 1] set curRow [$cell EntireRow] set height [Cawt ValueToPoints $height] if { $height == 0 } { $curRow -with { Rows } AutoFit } else { $curRow RowHeight $height } Cawt Destroy $curRow Cawt Destroy $cell }
SetRowsHeight [::Excel]Top, Main, Index
Set the height of a range of rows.
Parameters
worksheetId | Identifier of the worksheet. |
startRow | Range start row number. Row numbering starts with 1. |
endRow | Range end row number. Row numbering starts with 1. |
height | A positive value specifies the row's height. A value of zero specifies that the rows's height fits automatically the height of all elements in the row. Optional, default 0 . |
Description
The height value may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
Return value
Returns no value.
See also
SetRowHeight, SetColumnsWidth, ColumnCharToInt
proc ::Excel::SetRowsHeight {worksheetId startRow endRow {height 0}} { # Set the height of a range of rows. # # worksheetId - Identifier of the worksheet. # startRow - Range start row number. Row numbering starts with 1. # endRow - Range end row number. Row numbering starts with 1. # height - A positive value specifies the row's height. # A value of zero specifies that the rows's height # fits automatically the height of all elements in the row. # # The height value may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # # Returns no value. # # See also: SetRowHeight SetColumnsWidth ColumnCharToInt for { set r $startRow } { $r <= $endRow } { incr r } { Excel SetRowHeight $worksheetId $r $height } }
SetRowValues [::Excel]Top, Main, Index
Insert row values from a Tcl list.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
valList | List of values to be inserted. |
startCol | Column number of insertion start. Column numbering starts with 1. Optional, default 1 . |
numVals | If negative or zero, all list values are inserted. If positive, $numVals columns are filled with the list values (starting at list index 0). Optional, default 0 . |
Return value
Returns no value. If $valList
is an empty list, an error is thrown.
See also
GetRowValues, SetColumnValues, SetCellValue, ColumnCharToInt
proc ::Excel::SetRowValues {worksheetId row valList {startCol 1} {numVals 0}} { # Insert row values from a Tcl list. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # valList - List of values to be inserted. # startCol - Column number of insertion start. Column numbering starts with 1. # numVals - If negative or zero, all list values are inserted. # If positive, $numVals columns are filled with the list values # (starting at list index 0). # # Returns no value. If $valList is an empty list, an error is thrown. # # See also: GetRowValues SetColumnValues SetCellValue ColumnCharToInt set len [llength $valList] if { $numVals > 0 } { if { $numVals < $len } { set len $numVals } } set cellId [Excel SelectRangeByIndex $worksheetId $row $startCol $row [expr {$startCol + $len -1}]] Excel SetRangeValues $cellId [list $valList] Cawt Destroy $cellId }
SetSeriesAttributes [::Excel]Top, Main, Index
Set the attributes of a series.
Parameters
seriesId | Identifier of the series. |
args | Options described below. |
-linecolor <color> | Set the line color. |
-linewidth <size> | Set the line width. |
-markerstyle <XlMarkerStyle> | Set the style of the marker. Typical values: xlMarkerStyleNone, xlMarkerStyleSquare. |
Description
- Size values may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
- Color values may be specified in a format acceptable by procedure ::Cawt::GetColor, i.e. color name, hexadecimal string, Office color number.
Return value
Returns no value.
See also
AddSeriesTrendLine, GetChartNumSeries, GetChartSeries
proc ::Excel::SetSeriesAttributes {seriesId args} { # Set the attributes of a series. # # seriesId - Identifier of the series. # args - Options described below. # # -linewidth <size> - Set the line width. # -linecolor <color> - Set the line color. # -markerstyle <XlMarkerStyle> - Set the style of the marker. # Typical values: xlMarkerStyleNone, xlMarkerStyleSquare. # # * Size values may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # * Color values may be specified in a format acceptable by procedure [::Cawt::GetColor], # i.e. color name, hexadecimal string, Office color number. # # Returns no value. # # See also: AddSeriesTrendLine GetChartNumSeries GetChartSeries foreach { key value } $args { if { $value eq "" } { error "SetSeriesAttributes: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-linewidth" { $seriesId -with { Format Line } Visible [Cawt TclInt true] $seriesId -with { Format Line } Weight [Cawt ValueToPoints $value] } "-linecolor" { $seriesId -with { Format Line } Visible [Cawt TclInt true] $seriesId -with { Format Line ForeColor } RGB [Cawt GetColor $value] } "-markerstyle" { $seriesId MarkerStyle [Excel GetEnum $value] } default { error "SetSeriesAttributes: Unknown key \"$key\" specified" } } } }
SetSeriesLineWidth [::Excel]Top, Main, Index
Set the line width of a series.
Parameters
seriesId | Identifier of the series. |
width | Line width. |
Return value
Returns no value.
See also
GetChartNumSeries, GetChartSeries, AddSeriesTrendLine
proc ::Excel::SetSeriesLineWidth {seriesId width} { # Set the line width of a series. # # seriesId - Identifier of the series. # width - Line width. # # Returns no value. # # See also: GetChartNumSeries GetChartSeries AddSeriesTrendLine $seriesId -with { Format Line } Weight [expr {int($width)}] }
SetTablelistHeader [::Excel]Top, Main, Index
Insert header values into a tablelist.
Parameters
tableId | Identifier of the tablelist. |
headerList | List with table header data. |
Return value
Returns no value.
See also
TablelistToWorksheet, WorksheetToTablelist, SetTablelistValues, GetTablelistHeader
proc ::Excel::SetTablelistHeader {tableId headerList} { # Insert header values into a tablelist. # # tableId - Identifier of the tablelist. # headerList - List with table header data. # # Returns no value. # # See also: TablelistToWorksheet WorksheetToTablelist # SetTablelistValues GetTablelistHeader foreach title $headerList { $tableId insertcolumns end 0 $title left } }
SetTablelistValues [::Excel]Top, Main, Index
Insert matrix values into a tablelist.
Parameters
tableId | Identifier of the tablelist. |
matrixList | Matrix with table data. |
Return value
Returns no value.
See also
TablelistToWorksheet, WorksheetToTablelist, SetTablelistHeader, GetTablelistValues
proc ::Excel::SetTablelistValues {tableId matrixList} { # Insert matrix values into a tablelist. # # tableId - Identifier of the tablelist. # matrixList - Matrix with table data. # # Returns no value. # # See also: TablelistToWorksheet WorksheetToTablelist # SetTablelistHeader GetTablelistValues foreach rowList $matrixList { $tableId insert end $rowList } }
SetWindowState [::Excel]Top, Main, Index
Set the window state of an Excel application.
Parameters
appId | Identifier of the Excel instance. |
windowState | Value of enumeration type Enum::XlWindowState. Typical values are: xlMaximized , xlMinimized , xlNormal . Optional, default xlNormal . |
Return value
Returns no value.
See also
proc ::Excel::SetWindowState {appId {windowState xlNormal}} { # Set the window state of an Excel application. # # appId - Identifier of the Excel instance. # windowState - Value of enumeration type [Enum::XlWindowState]. # Typical values are: `xlMaximized`, `xlMinimized`, `xlNormal`. # # Returns no value. # # See also: Open Visible ArrangeWindows $appId -with { Application } WindowState [Excel GetEnum $windowState] }
SetWorksheetFitToPages [::Excel]Top, Main, Index
Adjust a worksheet to fit onto given number of pages.
Parameters
worksheetId | Identifier of the worksheet. |
wide | The number of pages in horizontal direction. Optional, default 1 . |
tall | The number of pages in vertical direction. Optional, default 1 . |
Description
Use zero for parameters $wide
or $tall
to automatically determine the number of pages. When using the default values for $wide
and $tall
, the worksheet is adjusted to fit onto exactly one piece of paper.
Return value
Returns no value.
See also
SetWorksheetOrientation, SetWorksheetZoom, SetWorksheetPrintOptions, SetWorksheetPaperSize, SetWorksheetMargins, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetFitToPages {worksheetId {wide 1} {tall 1}} { # Adjust a worksheet to fit onto given number of pages. # # worksheetId - Identifier of the worksheet. # wide - The number of pages in horizontal direction. # tall - The number of pages in vertical direction. # # Use zero for parameters $wide or $tall to automatically determine the # number of pages. # When using the default values for $wide and $tall, the worksheet is adjusted # to fit onto exactly one piece of paper. # # Returns no value. # # See also: SetWorksheetOrientation SetWorksheetZoom SetWorksheetPrintOptions # SetWorksheetPaperSize SetWorksheetMargins # SetWorksheetHeader SetWorksheetFooter if { $wide < 0 || $tall < 0 } { error "SetWorksheetFitToPages: Number of pages must be greater or equal to 0." } if { $wide == 0 } { set wideVar [Cawt TclBool false] } else { set wideVar [expr int($wide)] } if { $tall == 0 } { set tallVar [Cawt TclBool false] } else { set tallVar [expr int($tall)] } set pageSetup [$worksheetId PageSetup] $pageSetup Zoom [Cawt TclBool false] $pageSetup FitToPagesWide $wideVar $pageSetup FitToPagesTall $tallVar Cawt Destroy $pageSetup }
SetWorksheetFooter [::Excel]Top, Main, Index
Set the texts of the footer of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
args | Options described below. |
-center <string> | Set the text of the center footer. |
-left <string> | Set the text of the left footer. |
-right <string> | Set the text of the right footer. |
Return value
Returns no value.
See also
SetWorksheetOrientation, SetWorksheetFitToPages, SetWorksheetZoom, SetWorksheetPrintOptions, SetWorksheetPaperSize, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetFooter {worksheetId args} { # Set the texts of the footer of a worksheet. # # worksheetId - Identifier of the worksheet. # args - Options described below. # # -left <string> - Set the text of the left footer. # -center <string> - Set the text of the center footer. # -right <string> - Set the text of the right footer. # # Returns no value. # # See also: SetWorksheetOrientation SetWorksheetFitToPages SetWorksheetZoom # SetWorksheetPrintOptions SetWorksheetPaperSize # SetWorksheetHeader SetWorksheetFooter set pageSetup [$worksheetId PageSetup] foreach { key value } $args { if { $value eq "" } { error "SetWorksheetFooter: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-left" { $pageSetup LeftFooter $value } "-center" { $pageSetup CenterFooter $value } "-right" { $pageSetup RightFooter $value } default { error "SetWorksheetFooter: Unknown key \"$key\" specified" } } } Cawt Destroy $pageSetup }
SetWorksheetHeader [::Excel]Top, Main, Index
Set the texts of the header of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
args | Options described below. |
-center <string> | Set the text of the center header. |
-left <string> | Set the text of the left header. |
-right <string> | Set the text of the right header. |
Return value
Returns no value.
See also
SetWorksheetOrientation, SetWorksheetFitToPages, SetWorksheetZoom, SetWorksheetPrintOptions, SetWorksheetPaperSize, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetHeader {worksheetId args} { # Set the texts of the header of a worksheet. # # worksheetId - Identifier of the worksheet. # args - Options described below. # # -left <string> - Set the text of the left header. # -center <string> - Set the text of the center header. # -right <string> - Set the text of the right header. # # Returns no value. # # See also: SetWorksheetOrientation SetWorksheetFitToPages SetWorksheetZoom # SetWorksheetPrintOptions SetWorksheetPaperSize # SetWorksheetHeader SetWorksheetFooter set pageSetup [$worksheetId PageSetup] foreach { key value } $args { if { $value eq "" } { error "SetWorksheetHeader: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-left" { $pageSetup LeftHeader $value } "-center" { $pageSetup CenterHeader $value } "-right" { $pageSetup RightHeader $value } default { error "SetWorksheetHeader: Unknown key \"$key\" specified" } } } Cawt Destroy $pageSetup }
SetWorksheetMargins [::Excel]Top, Main, Index
Set the margins of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
args | Options described below. |
-bottom <size> | Set the size of the bottom margin. |
-footer <size> | Set the size of the footer margin. |
-header <size> | Set the size of the header margin. |
-left <size> | Set the size of the left margin. |
-right <size> | Set the size of the right margin. |
-top <size> | Set the size of the top margin. |
Description
The margin values may be specified in a format acceptable by procedure ::Cawt::ValueToPoints, i.e. centimeters, inches or points.
Example:
SetWorksheetMargins $worksheetId -top 1.5c -left 2i sets the top margin to 1.5 centimeters and the left margin to 2 inches.
Return value
Returns no value.
See also
SetWorksheetOrientation, SetWorksheetFitToPages, SetWorksheetZoom, SetWorksheetPrintOptions, SetWorksheetPaperSize, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetMargins {worksheetId args} { # Set the margins of a worksheet. # # worksheetId - Identifier of the worksheet. # args - Options described below. # # -top <size> - Set the size of the top margin. # -bottom <size> - Set the size of the bottom margin. # -left <size> - Set the size of the left margin. # -right <size> - Set the size of the right margin. # -footer <size> - Set the size of the footer margin. # -header <size> - Set the size of the header margin. # # The margin values may be specified in a format acceptable by # procedure [::Cawt::ValueToPoints], i.e. centimeters, inches or points. # # Example: # SetWorksheetMargins $worksheetId -top 1.5c -left 2i # sets the top margin to 1.5 centimeters and the left margin to 2 inches. # # Returns no value. # # See also: SetWorksheetOrientation SetWorksheetFitToPages SetWorksheetZoom # SetWorksheetPrintOptions SetWorksheetPaperSize # SetWorksheetHeader SetWorksheetFooter set pageSetup [$worksheetId PageSetup] foreach { key value } $args { if { $value eq "" } { error "SetWorksheetMargins: No value specified for key \"$key\"" } set pointValue [Cawt ValueToPoints $value] switch -exact -nocase -- $key { "-top" { $pageSetup TopMargin $pointValue } "-bottom" { $pageSetup BottomMargin $pointValue } "-left" { $pageSetup LeftMargin $pointValue } "-right" { $pageSetup RightMargin $pointValue } "-header" { $pageSetup HeaderMargin $pointValue } "-footer" { $pageSetup FooterMargin $pointValue } default { error "SetWorksheetMargins: Unknown key \"$key\" specified" } } } Cawt Destroy $pageSetup }
SetWorksheetName [::Excel]Top, Main, Index
Set the name of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
name | Name of the worksheet. |
args | Options described below. |
-mapproc <proc> | Procedure for mapping worksheet names to Excel constraints. Default: MapWorksheetName See MapWorksheetName for mapping details. |
Description
If $name
is the empty string, the worksheet name is automatically assigned by Excel.
Return value
Returns no value.
See also
GetWorksheetName, AddWorksheet, MapWorksheetName
proc ::Excel::SetWorksheetName {worksheetId name args} { # Set the name of a worksheet. # # worksheetId - Identifier of the worksheet. # name - Name of the worksheet. # args - Options described below. # # -mapproc <proc> - Procedure for mapping worksheet names to Excel constraints. # Default: [MapWorksheetName] # See [MapWorksheetName] for mapping details. # # If $name is the empty string, the worksheet name is automatically # assigned by Excel. # # Returns no value. # # See also: GetWorksheetName AddWorksheet MapWorksheetName if { $name eq "" } { return } set opts [dict create -mapproc Excel::MapWorksheetName ] foreach { key value } $args { if { [dict exists $opts $key] } { if { $value eq "" } { error "SetWorksheetName: No value specified for key \"$key\"." } dict set opts $key $value } else { error "SetWorksheetName: Unknown option \"$key\" specified." } } set sheetName $name set mapproc [dict get $opts "-mapproc"] if { $mapproc ne "" } { set sheetName [$mapproc $name] } $worksheetId Name $sheetName }
SetWorksheetOrientation [::Excel]Top, Main, Index
Set the orientation of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
orientation | Value of enumeration type Enum::XlPageOrientation. Possible values: xlLandscape or xlPortrait . |
Return value
Returns no value.
See also
SetWorksheetFitToPages, SetWorksheetZoom, SetWorksheetPrintOptions, SetWorksheetPaperSize, SetWorksheetMargins, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetOrientation {worksheetId orientation} { # Set the orientation of a worksheet. # # worksheetId - Identifier of the worksheet. # orientation - Value of enumeration type [Enum::XlPageOrientation]. # Possible values: `xlLandscape` or `xlPortrait`. # # Returns no value. # # See also: SetWorksheetFitToPages SetWorksheetZoom SetWorksheetPrintOptions # SetWorksheetPaperSize SetWorksheetMargins # SetWorksheetHeader SetWorksheetFooter $worksheetId -with { PageSetup } Orientation [Excel GetEnum $orientation] }
SetWorksheetPaperSize [::Excel]Top, Main, Index
Set the paper size of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
paperSize | Value of enumeration type Enum::XlPaperSize. |
Return value
Returns no value.
See also
SetWorksheetOrientation, SetWorksheetFitToPages, SetWorksheetZoom, SetWorksheetPrintOptions, SetWorksheetMargins, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetPaperSize {worksheetId paperSize} { # Set the paper size of a worksheet. # # worksheetId - Identifier of the worksheet. # paperSize - Value of enumeration type [Enum::XlPaperSize]. # # Returns no value. # # See also: SetWorksheetOrientation SetWorksheetFitToPages SetWorksheetZoom # SetWorksheetPrintOptions SetWorksheetMargins # SetWorksheetHeader SetWorksheetFooter $worksheetId -with { PageSetup } PaperSize [Excel GetEnum $paperSize] }
SetWorksheetPrintOptions [::Excel]Top, Main, Index
Set printing options of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
args | Options described below. |
-bw <bool> | Set printing in black-white only. |
-comments <enum> | Set printing of comments. Enumeration of type Enum::XlPrintLocation. Typical values: xlPrintInPlace , xlPrintNoComments . |
-draft <bool> | Set printing quality to draft mode. |
-errors <enum> | Set printing of errors. Enumeration of type Enum::XlPrintErrors. Typical values: xlPrintErrorsDisplayed , xlPrintErrorsBlank . |
-gridlines <bool> | Set the printing of grid lines. |
-headings <bool> | Set printing of headings. |
Return value
Returns no value.
See also
SetWorksheetOrientation, SetWorksheetFitToPages, SetWorksheetZoom, SetWorksheetPaperSize, SetWorksheetMargins, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetPrintOptions {worksheetId args} { # Set printing options of a worksheet. # # worksheetId - Identifier of the worksheet. # args - Options described below. # # -gridlines <bool> - Set the printing of grid lines. # -bw <bool> - Set printing in black-white only. # -draft <bool> - Set printing quality to draft mode. # -headings <bool> - Set printing of headings. # -comments <enum> - Set printing of comments. Enumeration of type [Enum::XlPrintLocation]. # Typical values: `xlPrintInPlace`, `xlPrintNoComments`. # -errors <enum> - Set printing of errors. Enumeration of type [Enum::XlPrintErrors]. # Typical values: `xlPrintErrorsDisplayed`, `xlPrintErrorsBlank`. # # Returns no value. # # See also: SetWorksheetOrientation SetWorksheetFitToPages SetWorksheetZoom # SetWorksheetPaperSize SetWorksheetMargins # SetWorksheetHeader SetWorksheetFooter set pageSetup [$worksheetId PageSetup] foreach { key value } $args { if { $value eq "" } { error "SetWorksheetPrintOptions: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-gridlines" { $pageSetup PrintGridlines [Cawt TclBool $value] } "-bw" { $pageSetup BlackAndWhite [Cawt TclBool $value] } "-draft" { $pageSetup Draft [Cawt TclBool $value] } "-headings" { $pageSetup PrintHeadings [Cawt TclBool $value] } "-comments" { $pageSetup PrintComments [Excel GetEnum $value] } "-errors" { $pageSetup PrintErrors [Excel GetEnum $value] } default { error "SetWorksheetPrintOptions: Unknown key \"$key\" specified" } } } Cawt Destroy $pageSetup }
SetWorksheetTabColor [::Excel]Top, Main, Index
Set the color of the tab of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
args | Tab color. |
Description
Color value may be specified in a format acceptable by procedure ::Cawt::GetColor, i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values.
Return value
Returns no value.
See also
SetRangeTextColor, GetWorksheetIdByIndex
proc ::Excel::SetWorksheetTabColor {worksheetId args} { # Set the color of the tab of a worksheet. # # worksheetId - Identifier of the worksheet. # args - Tab color. # # Color value may be specified in a format acceptable by procedure [::Cawt::GetColor], # i.e. color name, hexadecimal string, Office color number or a list of 3 integer RGB values. # # Returns no value. # # See also: SetRangeTextColor GetWorksheetIdByIndex set color [Cawt GetColor {*}$args] $worksheetId -with { Tab } Color $color }
SetWorksheetZoom [::Excel]Top, Main, Index
Set the zoom factor for printing of a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
zoom | The zoom factor in percent as an integer value. Optional, default 100 . |
Description
Valid zoom values are in the range [10, 400].
Return value
Returns no value.
See also
SetWorksheetOrientation, SetWorksheetFitToPages, SetWorksheetPrintOptions, SetWorksheetPaperSize, SetWorksheetMargins, SetWorksheetHeader, SetWorksheetFooter
proc ::Excel::SetWorksheetZoom {worksheetId {zoom 100}} { # Set the zoom factor for printing of a worksheet. # # worksheetId - Identifier of the worksheet. # zoom - The zoom factor in percent as an integer value. # # Valid zoom values are in the range \[10, 400\]. # # Returns no value. # # See also: SetWorksheetOrientation SetWorksheetFitToPages SetWorksheetPrintOptions # SetWorksheetPaperSize SetWorksheetMargins # SetWorksheetHeader SetWorksheetFooter $worksheetId -with { PageSetup } Zoom [expr int($zoom)] }
ShowAlerts [::Excel]Top, Main, Index
Toggle the display of Excel application alerts.
Parameters
appId | The application identifier. |
onOff | Switch the alerts on or off. |
Return value
Returns no value.
proc ::Excel::ShowAlerts {appId onOff} { # Toggle the display of Excel application alerts. # # appId - The application identifier. # onOff - Switch the alerts on or off. # # Returns no value. if { $onOff } { set alertLevel [expr 1] } else { set alertLevel [expr 0] } $appId DisplayAlerts $alertLevel }
ShowCellByIndex [::Excel]Top, Main, Index
Show a cell identified by its row/column index.
Parameters
worksheetId | Identifier of the worksheet. |
row | Row number. Row numbering starts with 1. |
col | Column number. Column numbering starts with 1. |
Description
Set the scrolling, so that the cell is shown at the upper left corner.
See also
proc ::Excel::ShowCellByIndex {worksheetId row col} { # Show a cell identified by its row/column index. # # worksheetId - Identifier of the worksheet. # row - Row number. Row numbering starts with 1. # col - Column number. Column numbering starts with 1. # # Set the scrolling, so that the cell is shown at the upper left corner. # # See also: SelectCellByIndex if { $row <= 0 } { error "Row number $row is invalid." } if { $col <= 0 } { error "Column number $col is invalid." } $worksheetId Activate set appId [Office GetApplicationId $worksheetId] set actWin [$appId ActiveWindow] $actWin ScrollColumn $col $actWin ScrollRow $row Cawt Destroy $actWin Cawt Destroy $appId }
ShowWorksheet [::Excel]Top, Main, Index
Show a worksheet.
Parameters
worksheetId | Identifier of the worksheet. |
See also
GetNumWorksheets, GetWorksheetIdByName, AddWorksheet
proc ::Excel::ShowWorksheet {worksheetId} { # Show a worksheet. # # worksheetId - Identifier of the worksheet. # # See also: GetNumWorksheets GetWorksheetIdByName AddWorksheet $worksheetId Activate }
TablelistToWorksheet [::Excel]Top, Main, Index
Insert the values of a tablelist into a worksheet.
Parameters
tableId | Identifier of the tablelist. |
worksheetId | Identifier of the worksheet. |
useHeader | If set to true, insert the header of the tablelist as first row. Otherwise only transfer the tablelist data. Optional, default true . |
startRow | Row number of insertion start. Row numbering starts with 1. Optional, default 1 . |
Description
Note: The contents of hidden columns are transfered to Excel and are hidden there, too. If the tablelist contains a column with automatic line numbering, this column is transfered to Excel, too. If this behaviour is not wished, use the DeleteColumn procedure to delete the corresponding column in Excel.
Return value
Returns no value.
See also
WorksheetToTablelist, SetMatrixValues, WikitFileToWorksheet, MediaWikiFileToWorksheet, MatlabFileToWorksheet, RawImageFileToWorksheet, WordTableToWorksheet
proc ::Excel::TablelistToWorksheet {tableId worksheetId {useHeader true} {startRow 1}} { # Insert the values of a tablelist into a worksheet. # # tableId - Identifier of the tablelist. # worksheetId - Identifier of the worksheet. # useHeader - If set to true, insert the header of the tablelist as first row. # Otherwise only transfer the tablelist data. # startRow - Row number of insertion start. Row numbering starts with 1. # # **Note:** # The contents of hidden columns are transfered to Excel and are hidden there, too. # If the tablelist contains a column with automatic line numbering, this column is # transfered to Excel, too. If this behaviour is not wished, use the [DeleteColumn] # procedure to delete the corresponding column in Excel. # # Returns no value. # # See also: WorksheetToTablelist SetMatrixValues # WikitFileToWorksheet MediaWikiFileToWorksheet MatlabFileToWorksheet # RawImageFileToWorksheet WordTableToWorksheet set curRow $startRow set numCols [$tableId columncount] if { $useHeader } { set headerList [list] for { set col 0 } { $col < $numCols } { incr col } { lappend headerList [$tableId columncget $col -title] } Excel SetHeaderRow $worksheetId $headerList $curRow incr curRow } set matrixList [$tableId get 0 end] Excel SetMatrixValues $worksheetId $matrixList $curRow 1 for { set col 0 } { $col < $numCols } { incr col } { if { [$tableId columncget $col -hide] } { Excel HideColumn $worksheetId [expr {$col + 1}] } } }
ToggleAutoFilter [::Excel]Top, Main, Index
Toggle the AutoFilter switch of a cell range.
Parameters
rangeId | Identifier of the cell range. |
Return value
Returns no value.
See also
SelectRangeByIndex, SelectRangeByString
proc ::Excel::ToggleAutoFilter {rangeId} { # Toggle the AutoFilter switch of a cell range. # # rangeId - Identifier of the cell range. # # Returns no value. # # See also: SelectRangeByIndex SelectRangeByString $rangeId AutoFilter }
UnhideWorksheet [::Excel]Top, Main, Index
Unhide a worksheet, if it is hidden.
Parameters
worksheetId | Identifier of the worksheet. |
Description
If the worksheet is hidden, it is made visible.
Return value
Returns no value.
See also
SetWorksheetTabColor, IsWorksheetVisible
proc ::Excel::UnhideWorksheet {worksheetId} { # Unhide a worksheet, if it is hidden. # # worksheetId - Identifier of the worksheet. # # If the worksheet is hidden, it is made visible. # # Returns no value. # # See also: SetWorksheetTabColor IsWorksheetVisible if { ! [Excel IsWorksheetVisible $worksheetId] } { if { [$worksheetId -with { Parent } ProtectStructure] } { error "Unable to unhide because the Workbook's structure is protected." } else { $worksheetId Visible $::Excel::xlSheetVisible } } }
UseImgTransparency [::Excel]Top, Main, Index
Toggle usage of transparency channel of an image.
Parameters
onOff | Not documented. |
Description
Only valid for ImgToWorksheet and WorksheetToImg procedures.
See also
ImgToWorksheet, WorksheetToImg
proc ::Excel::UseImgTransparency {onOff} { # Toggle usage of transparency channel of an image. # # Only valid for [ImgToWorksheet] and [WorksheetToImg] procedures. # # See also: ImgToWorksheet WorksheetToImg variable sUseTransparency set sUseTransparency $onOff }
Visible [::Excel]Top, Main, Index
Set or query the visibility of an Excel application window.
Parameters
appId | Identifier of the Excel instance. |
visible | If set to true, show the application window. If set to false, hide the application window. If empty, return the visbility status. Optional, default "" . |
Description
If parameter $visible
is not set or the empty string, the visibility status is returned as a boolean value. Otherwise no return value.
See also
Open, OpenNew, SetWindowState, ArrangeWindows
proc ::Excel::Visible {appId {visible {}}} { # Set or query the visibility of an Excel application window. # # appId - Identifier of the Excel instance. # visible - If set to true, show the application window. # If set to false, hide the application window. # If empty, return the visbility status. # # If parameter $visible is not set or the empty string, the visibility status # is returned as a boolean value. # Otherwise no return value. # # See also: Open OpenNew SetWindowState ArrangeWindows if { $visible eq "" } { return [$appId Visible] } $appId Visible [Cawt TclInt $visible] }
WikitFileToExcelFile [::Excel]Top, Main, Index
Convert a Wikit table file to an Excel file.
Parameters
wikiFileName | Name of the Wikit input file. |
excelFileName | Name of the Excel output file. |
useHeader | If set to true, use header information from the Wikit file to generate an Excel header (see SetHeaderRow). Otherwise only transfer the table data. Optional, default true . |
quitExcel | If set to true, quit the Excel instance after generation of output file. Otherwise leave the Excel instance open after generation of output file. Optional, default true . |
Description
The table data from the Wikit file will be inserted into a worksheet named "Wikit".
Return value
Returns the Excel application identifier, if $quitExcel
is false. Otherwise no return value.
See also
WikitFileToWorksheet, ExcelFileToWikitFile, ReadWikitFile, MediaWikiFileToExcelFile
proc ::Excel::WikitFileToExcelFile {wikiFileName excelFileName {useHeader true} {quitExcel true}} { # Convert a Wikit table file to an Excel file. # # wikiFileName - Name of the Wikit input file. # excelFileName - Name of the Excel output file. # useHeader - If set to true, use header information from the Wikit file to # generate an Excel header (see [SetHeaderRow]). # Otherwise only transfer the table data. # quitExcel - If set to true, quit the Excel instance after generation of output file. # Otherwise leave the Excel instance open after generation of output file. # # The table data from the Wikit file will be inserted into a worksheet named "Wikit". # # Returns the Excel application identifier, if $quitExcel is false. # Otherwise no return value. # # See also: WikitFileToWorksheet ExcelFileToWikitFile # ReadWikitFile MediaWikiFileToExcelFile set appId [Excel OpenNew true] set workbookId [Excel AddWorkbook $appId] set worksheetId [Excel AddWorksheet $workbookId "Wikit"] Excel WikitFileToWorksheet $wikiFileName $worksheetId $useHeader Excel SaveAs $workbookId $excelFileName if { $quitExcel } { Excel Quit $appId } else { return $appId } }
WikitFileToWorksheet [::Excel]Top, Main, Index
Insert the values of a Wikit table file into a worksheet.
Parameters
wikiFileName | Name of the Wikit file. |
worksheetId | Identifier of the worksheet. |
useHeader | If set to true, insert the header of the Wikit table as first row. Otherwise only transfer the table data. Optional, default true . |
Description
The insertion starts at row and column 1. Values contained in the worksheet cells are overwritten.
Return value
Returns no value.
See also
WorksheetToWikitFile, SetMatrixValues, MediaWikiFileToWorksheet, WordTableToWorksheet, MatlabFileToWorksheet, RawImageFileToWorksheet, TablelistToWorksheet
proc ::Excel::WikitFileToWorksheet {wikiFileName worksheetId {useHeader true}} { # Insert the values of a Wikit table file into a worksheet. # # wikiFileName - Name of the Wikit file. # worksheetId - Identifier of the worksheet. # useHeader - If set to true, insert the header of the Wikit table as first row. # Otherwise only transfer the table data. # # The insertion starts at row and column 1. # Values contained in the worksheet cells are overwritten. # # Returns no value. # # See also: WorksheetToWikitFile SetMatrixValues # MediaWikiFileToWorksheet WordTableToWorksheet MatlabFileToWorksheet # RawImageFileToWorksheet TablelistToWorksheet set catchVal [catch {open $wikiFileName "r"} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for reading." } set matrixList [list] set row 1 while { [gets $fp line] >= 0 } { set line [string trim $line] if { ( [string range $line 0 1] eq "%|" && $useHeader ) } { set rowStr [string map {"%|" "" "|%" "" } $line] set rowList [Excel::_WikitRowString2List $rowStr] Excel SetHeaderRow $worksheetId $rowList } elseif { [string range $line 0 1] eq "&|" } { set rowStr [string map {"&|" "" "|&" "" } $line] set rowList [Excel::_WikitRowString2List $rowStr] Excel SetRowValues $worksheetId $row $rowList } elseif { [string index $line 0] eq "|" } { set rowStr [string range $line 1 end-1] set rowList [Excel::_WikitRowString2List $rowStr] Excel SetRowValues $worksheetId $row $rowList } incr row } close $fp }
WordTableToWorksheet [::Excel]Top, Main, Index
Insert the values of a Word table into a worksheet.
Parameters
tableId | Identifier of the Word table. |
worksheetId | Identifier of the worksheet. |
useHeader | If set to true, insert the header of the Word table as first row. Otherwise transfer the table data only. Optional, default true . |
Return value
Returns no value.
See also
WorksheetToWordTable, SetMatrixValues, WikitFileToWorksheet, MediaWikiFileToWorksheet, MatlabFileToWorksheet, RawImageFileToWorksheet, TablelistToWorksheet
proc ::Excel::WordTableToWorksheet {tableId worksheetId {useHeader true}} { # Insert the values of a Word table into a worksheet. # # tableId - Identifier of the Word table. # worksheetId - Identifier of the worksheet. # useHeader - If set to true, insert the header of the Word table as first row. # Otherwise transfer the table data only. # # Returns no value. # # See also: WorksheetToWordTable SetMatrixValues # WikitFileToWorksheet MediaWikiFileToWorksheet MatlabFileToWorksheet # RawImageFileToWorksheet TablelistToWorksheet set numCols [Word GetNumColumns $tableId] if { $useHeader } { for { set col 1 } { $col <= $numCols } { incr col } { lappend headerList [Word GetCellValue $tableId 1 $col] } Excel SetHeaderRow $worksheetId $headerList } set numRows [Word GetNumRows $tableId] incr numRows -1 set startWordRow 2 if { $useHeader } { set startExcelRow 2 } else { set startExcelRow 1 } set tableList [Word GetMatrixValues $tableId $startWordRow 1 [expr {$startWordRow + $numRows-1}] $numCols] Excel SetMatrixValues $worksheetId $tableList $startExcelRow 1 }
WorksheetToClipboard [::Excel]Top, Main, Index
Copy worksheet data into the clipboard.
Parameters
worksheetId | Identifier of the worksheet. |
row1 | Row number of upper-left corner of the copy range. |
col1 | Column number of upper-left corner of the copy range. |
row2 | Row number of lower-right corner of the copy range. |
col2 | Column number of lower-right corner of the copy range. |
sepChar | The separation character of the clipboard matrix data. Optional, default ; . |
Description
The clipboard data will be in CSV
format with $sepChar
as separation character.
Return value
Returns no value.
See also
ClipboardToWorksheet, MatrixToClipboard
proc ::Excel::WorksheetToClipboard {worksheetId row1 col1 row2 col2 {sepChar {;}}} { # Copy worksheet data into the clipboard. # # worksheetId - Identifier of the worksheet. # row1 - Row number of upper-left corner of the copy range. # col1 - Column number of upper-left corner of the copy range. # row2 - Row number of lower-right corner of the copy range. # col2 - Column number of lower-right corner of the copy range. # sepChar - The separation character of the clipboard matrix data. # # The clipboard data will be in `CSV` format with $sepChar as separation character. # # Returns no value. # # See also: ClipboardToWorksheet MatrixToClipboard set matrixList [Excel GetMatrixValues $worksheetId $row1 $col1 $row2 $col2] Excel MatrixToClipboard $matrixList $sepChar }
WorksheetToHtmlFile [::Excel]Top, Main, Index
Write the values of a worksheet into a HTML table file.
Parameters
worksheetId | Identifier of the worksheet. |
htmlFileName | Name of the HTML file. |
useTarget | If set to true, generate a target attribute for hyperlinks. Otherwise, no target attribute for hyperlinks, i.e. link opens in same tab. Optional, default true . |
Description
The following attributes are exported to the HTML file:
- Font: Name, size, style (bold, italic, underline).
- Column span across a row.
- Text and background color.
- Horizontal and vertical text alignment.
- Hyperlinks.
Return value
Returns no value.
See also
GetMatrixValues, ExcelFileToHtmlFile, WorksheetToMediaWikiFile, WorksheetToWikitFile, WorksheetToWordTable, WorksheetToMatlabFile, WorksheetToRawImageFile, WorksheetToTablelist
proc ::Excel::WorksheetToHtmlFile {worksheetId htmlFileName {useTarget true}} { # Write the values of a worksheet into a HTML table file. # # worksheetId - Identifier of the worksheet. # htmlFileName - Name of the HTML file. # useTarget - If set to true, generate a target attribute for hyperlinks. # Otherwise, no target attribute for hyperlinks, i.e. link opens in same tab. # # The following attributes are exported to the HTML file: # * Font: Name, size, style (bold, italic, underline). # * Column span across a row. # * Text and background color. # * Horizontal and vertical text alignment. # * Hyperlinks. # # Returns no value. # # See also: GetMatrixValues ExcelFileToHtmlFile # WorksheetToMediaWikiFile WorksheetToWikitFile WorksheetToWordTable # WorksheetToMatlabFile WorksheetToRawImageFile WorksheetToTablelist set numRows [Excel GetLastUsedRow $worksheetId] set numCols [Excel GetLastUsedColumn $worksheetId] set startRow 1 set catchVal [catch {open $htmlFileName w} fp] if { $catchVal != 0 } { error "Could not open file \"$htmlFileName\" for writing." } Excel::_WriteTableBegin $fp for { set row $startRow } { $row <= $numRows } { incr row } { set spanList [Excel::_GetRowSpan $worksheetId $row $numCols] set bgColors [Excel::_GetRowBackgroundColor $worksheetId $row $numCols] Excel::_WriteTableRow $worksheetId $row $numCols $fp $bgColors $spanList $useTarget } Excel::_WriteTableEnd $fp close $fp }
WorksheetToImg [::Excel]Top, Main, Index
Put worksheet background colors into a photo image.
Parameters
worksheetId | Identifier of the worksheet. |
startRow | Row number of the top-left corner of the image. Optional, default 1 . |
startCol | Column number of the top-left corner of the image. Optional, default 1 . |
endRow | Row number of the bottom-right corner of the image. Optional, default end . |
endCol | Column number of the bottom-right corner of the image. Optional, default end . |
Description
Note: Row and column numbering starts with 1. Instead of using a number for $endRow
or $endCol
, it is possible to use the special word end
to use the last used row or column.
Return value
Returns the photo image identifier.
See also
ImgToWorksheet, UseImgTransparency, ::Cawt::ImgToClipboard, RawImageFileToWorksheet, GetLastUsedRow, GetLastUsedColumn
proc ::Excel::WorksheetToImg {worksheetId {startRow 1} {startCol 1} {endRow end} {endCol end}} { # Put worksheet background colors into a photo image. # # worksheetId - Identifier of the worksheet. # startRow - Row number of the top-left corner of the image. # startCol - Column number of the top-left corner of the image. # endRow - Row number of the bottom-right corner of the image. # endCol - Column number of the bottom-right corner of the image. # # **Note:** # Row and column numbering starts with 1. # Instead of using a number for $endRow or $endCol, it is possible to use # the special word `end` to use the last used row or column. # # Returns the photo image identifier. # # See also: ImgToWorksheet UseImgTransparency # ::Cawt::ImgToClipboard RawImageFileToWorksheet # GetLastUsedRow GetLastUsedColumn variable sUseTransparency if { $endRow eq "end" } { set endRow [Excel GetLastUsedRow $worksheetId] } if { $endCol eq "end" } { set endCol [Excel GetLastUsedColumn $worksheetId] } set w [expr { $endCol - $startCol + 1 }] set h [expr { $endRow - $startRow + 1 }] set phImg [image create photo -width $w -height $h] set curRow $startRow for { set y 0 } { $y < $h } { incr y } { set curCol $startCol for { set x 0 } { $x < $w } { incr x } { set rangeId [Excel SelectCellByIndex $worksheetId $curRow $curCol] if { $sUseTransparency } { if { [$rangeId -with { Interior } Pattern] == $::Excel::xlNone } { $phImg transparency set $x $y true } else { set rgb [Excel GetRangeFillColor $rangeId] set colorVal [format "#%02X%02X%02X" [lindex $rgb 0] [lindex $rgb 1] [lindex $rgb 2]] $phImg put $colorVal -to $x $y } } else { set rgb [Excel GetRangeFillColor $rangeId] set colorVal [format "#%02X%02X%02X" [lindex $rgb 0] [lindex $rgb 1] [lindex $rgb 2]] $phImg put $colorVal -to $x $y } incr curCol Cawt Destroy $rangeId } incr curRow } return $phImg }
WorksheetToMatlabFile [::Excel]Top, Main, Index
Insert the values of a worksheet into a Matlab file.
Parameters
worksheetId | Identifier of the worksheet. |
matFileName | Name of the Matlab file. |
useHeader | If set to true, interpret the first row of the worksheet as header and thus do not transfer this row into the Matlab file. Otherwise all worksheet cells are interpreted as data. Optional, default true . |
Description
Note: Only Matlab Level 4 files are currently supported.
Return value
Returns no value.
See also
MatlabFileToWorksheet, GetMatrixValues, WorksheetToWikitFile, WorksheetToMediaWikiFile, WorksheetToRawImageFile, WorksheetToTablelist, WorksheetToWordTable
proc ::Excel::WorksheetToMatlabFile {worksheetId matFileName {useHeader true}} { # Insert the values of a worksheet into a Matlab file. # # worksheetId - Identifier of the worksheet. # matFileName - Name of the Matlab file. # useHeader - If set to true, interpret the first row of the worksheet as header and # thus do not transfer this row into the Matlab file. # Otherwise all worksheet cells are interpreted as data. # # **Note:** Only Matlab Level 4 files are currently supported. # # Returns no value. # # See also: MatlabFileToWorksheet GetMatrixValues # WorksheetToWikitFile WorksheetToMediaWikiFile WorksheetToRawImageFile # WorksheetToTablelist WorksheetToWordTable set numRows [Excel GetLastUsedRow $worksheetId] set numCols [Excel GetLastUsedColumn $worksheetId] set startRow 1 if { $useHeader } { incr startRow } set excelList [Excel GetMatrixValues $worksheetId $startRow 1 $numRows $numCols] Excel WriteMatlabFile $excelList $matFileName }
WorksheetToMediaWikiFile [::Excel]Top, Main, Index
Insert the values of a worksheet into a MediaWiki table file.
Parameters
worksheetId | Identifier of the worksheet. |
wikiFileName | Name of the MediaWiki file. |
useHeader | If set to true, use the first row of the worksheet as the header of the MediaWiki table. Otherwise do not generate a MediaWiki table header. All worksheet cells are interpreted as data. Optional, default true . |
Return value
Returns no value.
See also
MediaWikiFileToWorksheet, GetMatrixValues, WorksheetToWikitFile, WorksheetToWordTable, WorksheetToMatlabFile, WorksheetToRawImageFile, WorksheetToTablelist
proc ::Excel::WorksheetToMediaWikiFile {worksheetId wikiFileName {useHeader true}} { # Insert the values of a worksheet into a MediaWiki table file. # # worksheetId - Identifier of the worksheet. # wikiFileName - Name of the MediaWiki file. # useHeader - If set to true, use the first row of the worksheet as the header # of the MediaWiki table. # Otherwise do not generate a MediaWiki table header. All worksheet # cells are interpreted as data. # # Returns no value. # # See also: MediaWikiFileToWorksheet GetMatrixValues # WorksheetToWikitFile WorksheetToWordTable WorksheetToMatlabFile # WorksheetToRawImageFile WorksheetToTablelist set numRows [Excel GetLastUsedRow $worksheetId] set numCols [Excel GetLastUsedColumn $worksheetId] set startRow 1 set catchVal [catch {open $wikiFileName w} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for writing." } if { $useHeader } { set headerList [Excel GetMatrixValues $worksheetId $startRow 1 $startRow $numCols] set worksheetName [Excel GetWorksheetName $worksheetId] Excel::_WriteMediaWikiHeader $fp [lindex $headerList 0] $worksheetName incr startRow } set matrixList [Excel GetMatrixValues $worksheetId $startRow 1 $numRows $numCols] Excel::_WriteMediaWikiData $fp $matrixList close $fp }
WorksheetToRawImageFile [::Excel]Top, Main, Index
Insert the values of a worksheet into a raw photo image file.
Parameters
worksheetId | Identifier of the worksheet. |
rawFileName | File name of the image. |
useHeader | If set to true, interpret the first row of the worksheet as header and thus do not transfer this row into the image. Otherwise all worksheet cells are interpreted as data. Optional, default true . |
pixelType | Pixel type: byte , short , float . Optional, default float . |
Description
The image generated is a 1-channel floating point photo image. It can be read and manipulated with the Img extension. It is not a "raw" image as used with digital cameras, but just "raw" image data.
Return value
Returns no value.
See also
RawImageFileToWorksheet, GetMatrixValues, WorksheetToWikitFile, WorksheetToMediaWikiFile, WorksheetToMatlabFile, WorksheetToTablelist, WorksheetToWordTable
proc ::Excel::WorksheetToRawImageFile {worksheetId rawFileName {useHeader true} {pixelType float}} { # Insert the values of a worksheet into a raw photo image file. # # worksheetId - Identifier of the worksheet. # rawFileName - File name of the image. # useHeader - If set to true, interpret the first row of the worksheet as header and # thus do not transfer this row into the image. # Otherwise all worksheet cells are interpreted as data. # pixelType - Pixel type: `byte`, `short`, `float`. # # The image generated is a 1-channel floating point photo image. It can be # read and manipulated with the Img extension. It is not a "raw" image as used # with digital cameras, but just "raw" image data. # # Returns no value. # # See also: RawImageFileToWorksheet GetMatrixValues # WorksheetToWikitFile WorksheetToMediaWikiFile WorksheetToMatlabFile # WorksheetToTablelist WorksheetToWordTable set numRows [Excel GetLastUsedRow $worksheetId] set numCols [Excel GetLastUsedColumn $worksheetId] set startRow 1 if { $useHeader } { incr startRow } set excelList [Excel GetMatrixValues $worksheetId $startRow 1 $numRows $numCols] Excel WriteRawImageFile $excelList $rawFileName $pixelType }
WorksheetToTablelist [::Excel]Top, Main, Index
Insert the values of a worksheet into a tablelist.
Parameters
worksheetId | Identifier of the worksheet. |
tableId | Identifier of the tablelist. |
args | Options described below. |
-header <bool> | If set to true, use the first row of the worksheet as header labels of the tablelist. Default: false. |
-maxcols <int> | Specify the maximum number of Excel columns being transfered to the tablelist. Default: All used columns. |
-maxrows <int> | Specify the maximum number of Excel rows being transfered to the tablelist. Default: All used rows. |
-rownumber <bool> | If set to true, use the first column of the tablelist to display the row number. Default: false. |
-selection <bool> | Transfer the selected Excel cell range. Overwrites values specified by -maxrows and -maxcols . |
Description
Note: The tablelist is cleared before transfer. The contents of hidden columns are transfered from Excel to the tablelist and are hidden there, too.
Return value
Returns no value.
See also
TablelistToWorksheet, GetMatrixValues, WorksheetToWikitFile, WorksheetToMediaWikiFile, WorksheetToMatlabFile, WorksheetToRawImageFile, WorksheetToWordTable
proc ::Excel::WorksheetToTablelist {worksheetId tableId args} { # Insert the values of a worksheet into a tablelist. # # worksheetId - Identifier of the worksheet. # tableId - Identifier of the tablelist. # args - Options described below. # # -header <bool> - If set to true, use the first row of the worksheet as # header labels of the tablelist. Default: false. # -rownumber <bool> - If set to true, use the first column of the tablelist # to display the row number. Default: false. # -maxrows <int> - Specify the maximum number of Excel rows being transfered # to the tablelist. Default: All used rows. # -maxcols <int> - Specify the maximum number of Excel columns being transfered # to the tablelist. Default: All used columns. # -selection <bool> - Transfer the selected Excel cell range. Overwrites values # specified by `-maxrows`and `-maxcols`. # # **Note:** # The tablelist is cleared before transfer. # The contents of hidden columns are transfered from Excel to the tablelist # and are hidden there, too. # # Returns no value. # # See also: TablelistToWorksheet GetMatrixValues # WorksheetToWikitFile WorksheetToMediaWikiFile WorksheetToMatlabFile # WorksheetToRawImageFile WorksheetToWordTable set useHeader false set useRowNum false set useSelection false set maxRows 0 set maxCols 0 foreach { key value } $args { if { $key == 1 || $key == 0 || $key == true || $key == false } { set useHeader $key puts "WorksheetToTablelist: Signature has been changed. Use -header <bool> instead." continue } if { $value eq "" } { error "WorksheetToTablelist: No value specified for key \"$key\"" } switch -exact -nocase -- $key { "-header" { set useHeader $value } "-selection" { set useSelection $value } "-rownumber" { set useRowNum $value } "-maxrows" { set maxRows $value } "-maxcols" { set maxCols $value } default { error "WorksheetToTablelist: Unknown key \"$key\" specified" } } } set numRows [Excel GetLastUsedRow $worksheetId] set numCols [Excel GetLastUsedColumn $worksheetId] if { $maxRows > 0 && $maxRows < $numRows } { set numRows $maxRows } if { $maxCols > 0 && $maxCols < $numCols } { set numCols $maxCols } set startRow 1 set startCol 1 set endRow $numRows set endCol $numCols if { $useSelection } { set appId [Office GetApplicationId $worksheetId] set selection [$appId Selection] set selectionRange [Excel GetRangeAsIndex $selection] if { [llength $selectionRange] == 2 } { set startRow [lindex $selectionRange 0] set startCol [lindex $selectionRange 1] set endRow $startRow set endCol $startCol set numRows 1 set numCols 1 } else { set startRow [lindex $selectionRange 0] set startCol [lindex $selectionRange 1] set endRow [lindex $selectionRange 2] set endCol [lindex $selectionRange 3] set numRows [expr { $endRow - $startRow + 1 }] set numCols [expr { $endCol - $startCol + 1 }] } } set columnList [list] if { $useRowNum } { lappend columnList 0 "#" left } if { $useHeader } { set headerList [Excel GetRowValues $worksheetId 1 $startCol $numCols] foreach title $headerList { lappend columnList 0 $title left } if { ! $useSelection } { incr startRow } } else { for { set col $startCol } { $col <= $endCol } { incr col } { lappend columnList 0 [ColumnIntToChar $col] left } } # Delete table content and all columns. $tableId delete 0 end if { [$tableId columncount] > 0 } { $tableId deletecolumns 0 end } $tableId insertcolumnlist end $columnList set excelList [Excel GetMatrixValues $worksheetId $startRow $startCol $endRow $endCol] if { $useRowNum } { foreach rowList $excelList { $tableId insert end [list "" {*}$rowList] } } else { foreach rowList $excelList { $tableId insert end $rowList } } set colAdd 0 if { $useRowNum } { $tableId columnconfigure 0 -showlinenumbers true set colAdd 1 } foreach col [Excel GetHiddenColumns $worksheetId] { $tableId columnconfigure [expr {$col + $colAdd - 1}] -hide true } }
WorksheetToWikitFile [::Excel]Top, Main, Index
Insert the values of a worksheet into a Wikit table file.
Parameters
worksheetId | Identifier of the worksheet. |
wikiFileName | Name of the Wikit file. |
useHeader | If set to true, use the first row of the worksheet as the header of the Wikit table. Otherwise do not generate a Wikit table header. All worksheet cells are interpreted as data. Optional, default true . |
Return value
Returns no value.
See also
WikitFileToWorksheet, GetMatrixValues, WorksheetToMediaWikiFile, WorksheetToWordTable, WorksheetToMatlabFile, WorksheetToRawImageFile, WorksheetToTablelist
proc ::Excel::WorksheetToWikitFile {worksheetId wikiFileName {useHeader true}} { # Insert the values of a worksheet into a Wikit table file. # # worksheetId - Identifier of the worksheet. # wikiFileName - Name of the Wikit file. # useHeader - If set to true, use the first row of the worksheet as the header # of the Wikit table. # Otherwise do not generate a Wikit table header. All worksheet # cells are interpreted as data. # # Returns no value. # # See also: WikitFileToWorksheet GetMatrixValues # WorksheetToMediaWikiFile WorksheetToWordTable WorksheetToMatlabFile # WorksheetToRawImageFile WorksheetToTablelist set numRows [Excel GetLastUsedRow $worksheetId] set numCols [Excel GetLastUsedColumn $worksheetId] set startRow 1 set catchVal [catch {open $wikiFileName w} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for writing." } if { $useHeader } { set headerList [Excel GetMatrixValues $worksheetId $startRow 1 $startRow $numCols] set worksheetName [Excel GetWorksheetName $worksheetId] Excel::_WriteWikitHeader $fp [lindex $headerList 0] $worksheetName incr startRow } set matrixList [Excel GetMatrixValues $worksheetId $startRow 1 $numRows $numCols] Excel::_WriteWikitData $fp $matrixList close $fp }
WorksheetToWordTable [::Excel]Top, Main, Index
Insert the values of a worksheet into a Word table.
Parameters
worksheetId | Identifier of the worksheet. |
tableId | Identifier of the Word table. |
useHeader | If set to true, use the first row of the worksheet as the header of the Word table. Otherwise do not generate a Word table header. All worksheet cells are interpreted as data. Optional, default true . |
Return value
Returns no value.
See also
WordTableToWorksheet, GetMatrixValues, WorksheetToWikitFile, WorksheetToMediaWikiFile, WorksheetToMatlabFile, WorksheetToRawImageFile, WorksheetToTablelist
proc ::Excel::WorksheetToWordTable {worksheetId tableId {useHeader true}} { # Insert the values of a worksheet into a Word table. # # worksheetId - Identifier of the worksheet. # tableId - Identifier of the Word table. # useHeader - If set to true, use the first row of the worksheet as the header of the Word table. # Otherwise do not generate a Word table header. All worksheet cells are interpreted as data. # # Returns no value. # # See also: WordTableToWorksheet GetMatrixValues # WorksheetToWikitFile WorksheetToMediaWikiFile WorksheetToMatlabFile # WorksheetToRawImageFile WorksheetToTablelist set numRows [Excel GetLastUsedRow $worksheetId] set numCols [Excel GetLastUsedColumn $worksheetId] set startRow 1 set headerList [Excel GetRowValues $worksheetId 1 1 $numCols] if { [llength $headerList] < $numCols } { set numCols [llength $headerList] } if { $useHeader } { Word SetHeaderRow $tableId $headerList incr startRow } set excelList [Excel GetMatrixValues $worksheetId $startRow 1 $numRows $numCols] Word SetMatrixValues $tableId $excelList $startRow 1 }
WriteCsvFile [::Excel]Top, Main, Index
Write the values of a matrix into a CSV
file.
Parameters
matrixList | Matrix with table data. |
csvFileName | Name of the CSV file. |
Description
See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
proc ::Excel::WriteCsvFile {matrixList csvFileName} { # Write the values of a matrix into a `CSV` file. # # matrixList - Matrix with table data. # csvFileName - Name of the `CSV` file. # # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: ReadCsvFile set catchVal [catch {open $csvFileName w} fp] if { $catchVal != 0 } { error "Could not open file \"$csvFileName\" for writing." } fconfigure $fp -translation binary foreach row $matrixList { puts -nonewline $fp [Excel ListToCsvRow $row] puts -nonewline $fp "\r\n" } close $fp }
WriteHtmlFile [::Excel]Top, Main, Index
Write the values of a matrix into a Html table file.
Parameters
matrixList | Matrix with table data. |
htmlFileName | Name of the HTML file. |
useHeader | If set to true, use first row of the matrix as header of the HTML table. Optional, default true . |
Description
See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
proc ::Excel::WriteHtmlFile {matrixList htmlFileName {useHeader true}} { # Write the values of a matrix into a Html table file. # # matrixList - Matrix with table data. # htmlFileName - Name of the HTML file. # useHeader - If set to true, use first row of the matrix as header of the # HTML table. # # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: WorksheetToHtmlFile set catchVal [catch {open $htmlFileName w} fp] if { $catchVal != 0 } { error "Could not open file \"$htmlFileName\" for writing." } Excel::_WriteTableBegin $fp set curRow 1 foreach rowList $matrixList { if { $useHeader && $curRow == 1 } { Excel::_WriteSimpleTableHeader $fp $rowList } else { Excel::_WriteSimpleTableRow $fp $rowList } incr curRow } Excel::_WriteTableEnd $fp close $fp }
WriteMatlabFile [::Excel]Top, Main, Index
Write the values of a matrix into a Matlab file.
Parameters
matrixList | Floating point matrix. |
matFileName | Name of the Matlab file. |
Description
Note: Only Matlab Level 4 files are currently supported.
See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
ReadMatlabFile, WorksheetToMatlabFile
proc ::Excel::WriteMatlabFile {matrixList matFileName} { # Write the values of a matrix into a Matlab file. # # matrixList - Floating point matrix. # matFileName - Name of the Matlab file. # # **Note:** Only Matlab Level 4 files are currently supported. # # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: ReadMatlabFile WorksheetToMatlabFile set retVal [catch {open $matFileName "w"} matFp] if { $retVal != 0 } { error "Cannot open file $matFileName" } fconfigure $matFp -translation binary set height [llength $matrixList] set width [llength [lindex $matrixList 0]] Excel::_PutMatlabHeader $matFp $width $height [file rootname $matFileName] for { set col 0 } { $col < $width } { incr col } { for { set row 0 } { $row < $height } { incr row } { set pix [lindex [lindex $matrixList $row] $col] puts -nonewline $matFp [binary format d $pix] } } }
WriteMediaWikiFile [::Excel]Top, Main, Index
Write the values of a matrix into a MediaWiki table file.
Parameters
matrixList | Matrix with table data. |
wikiFileName | Name of the MediaWiki file. |
useHeader | If set to true, use first row of the matrix as header of the MediaWiki table. Otherwise only transfer the table data. Optional, default true . |
tableName | Table name (caption) of the generated MediaWiki table. Optional, default "" . |
Description
See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
ReadMediaWikiFile, WorksheetToMediaWikiFile
proc ::Excel::WriteMediaWikiFile {matrixList wikiFileName {useHeader true} {tableName {}}} { # Write the values of a matrix into a MediaWiki table file. # # matrixList - Matrix with table data. # wikiFileName - Name of the MediaWiki file. # useHeader - If set to true, use first row of the matrix as header of the # MediaWiki table. # Otherwise only transfer the table data. # tableName - Table name (caption) of the generated MediaWiki table. # # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: ReadMediaWikiFile WorksheetToMediaWikiFile set catchVal [catch {open $wikiFileName w} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for writing." } puts $fp "{| class=\"wikitable border=\"1\"" if { $tableName ne "" } { puts $fp "|+ $tableName" } set curLine 1 foreach line $matrixList { if { $useHeader && $curLine == 1 } { puts $fp [Excel::_MediaWikiList2RowString $line "!!"] } else { puts $fp [Excel::_MediaWikiList2RowString $line "||"] } incr curLine } puts $fp "|}" close $fp }
WriteRawImageFile [::Excel]Top, Main, Index
Write the values of a matrix into a raw photo image file.
Parameters
matrixList | Floating point matrix. |
rawImgFile | File name of the image. |
pixelType | Pixel type: byte , short , float . Optional, default float . |
Description
Note: The matrix values are written as 1-channel image with given pixel type.
See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
ReadRawImageFile, WorksheetToRawImageFile
proc ::Excel::WriteRawImageFile {matrixList rawImgFile {pixelType float}} { # Write the values of a matrix into a raw photo image file. # # matrixList - Floating point matrix. # rawImgFile - File name of the image. # pixelType - Pixel type: `byte`, `short`, `float`. # # **Note:** The matrix values are written as 1-channel image with given pixel type. # # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: ReadRawImageFile WorksheetToRawImageFile if { $pixelType ne "byte" && $pixelType ne "short" && $pixelType ne "float" } { error "Invalid PixelType value: $pixelType (must be byte, short or float)" } set retVal [catch {open $rawImgFile "w"} rawFp] if { $retVal != 0 } { error "Cannot open file $rawImgFile" } fconfigure $rawFp -translation binary set height [llength $matrixList] set width [llength [lindex $matrixList 0]] Excel::_PutRawImageHeader $rawFp $width $height $pixelType set scanFmt [Excel::_GetScanFormat $pixelType [Excel::_GetNativeByteOrder]] set convertToInt true if { $pixelType eq "float" } { set convertToInt false } foreach rowList $matrixList { foreach pix $rowList { if { $convertToInt } { puts -nonewline $rawFp [binary format $scanFmt [expr {int ($pix) }]] } else { puts -nonewline $rawFp [binary format $scanFmt $pix] } } } }
WriteWikitFile [::Excel]Top, Main, Index
Write the values of a matrix into a Wikit table file.
Parameters
matrixList | Matrix with table data. |
wikiFileName | Name of the Wikit file. |
useHeader | If set to true, use first row of the matrix as header of the Wikit table. Optional, default true . |
Description
See SetMatrixValues for the description of a matrix representation.
Return value
Returns no value.
See also
ReadWikitFile, WorksheetToWikitFile
proc ::Excel::WriteWikitFile {matrixList wikiFileName {useHeader true}} { # Write the values of a matrix into a Wikit table file. # # matrixList - Matrix with table data. # wikiFileName - Name of the Wikit file. # useHeader - If set to true, use first row of the matrix as header of the # Wikit table. # # See [SetMatrixValues] for the description of a matrix representation. # # Returns no value. # # See also: ReadWikitFile WorksheetToWikitFile set catchVal [catch {open $wikiFileName w} fp] if { $catchVal != 0 } { error "Could not open file \"$wikiFileName\" for writing." } set curLine 1 foreach line $matrixList { if { $useHeader && $curLine == 1 } { puts $fp [Excel::_WikitList2RowString $line "%|" "|%"] } else { puts $fp [Excel::_WikitList2RowString $line "&|" "|&"] } incr curLine } close $fp }