ooxml(n) | ooxml user documentation
NAME
::ooxml::xl_sheets, ::ooxml::xl_read, ::ooxml::xl_write, ::ooxml::tablelist_to_xl - Read and create ECMA-376 Office Open XML Spreadsheets (the .xlsx format)
SYNOPSIS
package require ooxml
::ooxml::xl_sheets file
::ooxml::xl_read file ?-option value ...?
::ooxml::xl_write new ?-option value ...?
::ooxml::tablelist_to_xl tablelist ?-option value ...?
DESCRIPTION
The commands of this package read or create ECMA-376 Office Open XML Spreadsheets (LibreOffice and Excel “.xlsx” files). The three most important are:
::ooxml::xl_read - imports a .xlsx spreadsheet file into a Tcl array
::ooxml::xl_write - creates a spreadsheet object command
::ooxml::tablelist_to_xl - exports a Tcl tablelist to a .xlsx spreadsheet
In this documentation the term workbook means a whole spreadsheet with all its tables. The term worksheet means a specific table of the workbook it belongs to.
All row, column and sheet indices used by this package are zero-based. Cell positions may be given numerically as row,column or in Excel notation; see CELL INDEX.
The package provides the following commands:
- ::ooxml::arrayDeleteSheet arrayName sheetId ?-sheetname?
-
Deletes one worksheet from an array read with ::ooxml::xl_read and renumbers the remaining sheets. The array is passed by name (without
$). By default sheetId is the zero-based sheet index; with the -sheetname option it is the worksheet name.::ooxml::arrayDeleteSheet workbook 0 ::ooxml::arrayDeleteSheet workbook "Sheet1" -sheetname - ::ooxml::CalcColumnWidth numberOfCharacters ?maximumDigitWidth? ?pixelPadding?
-
Returns the column width value (for the column method -width option) that fits the given number of characters. The optional arguments maximumDigitWidth (default 7) and pixelPadding (default 5) describe the metrics of the standard font.
::ooxml::CalcColumnWidth 16 ;# -> 16.7109375 - ::ooxml::Column column
-
Converts the zero-based column number into the column name in Excel notation (0 -> A, 1 -> B, 26 -> AA, …).
- ::ooxml::Default name value
-
Sets a package wide default. The only currently supported name is path: the default directory of written files (used e.g. by ::ooxml::tablelist_to_xl if no -path is given). An empty value resets it to the current directory.
- ::ooxml::RowColumnToString rowcol
-
Converts a numerical cell index (row,column, zero-based) into Excel notation (0,0 -> A1).
- ::ooxml::StringToRowColumn name
-
Converts a cell position in Excel notation into the numerical form (A1 -> 0,0).
- ::ooxml::tablelist_to_xl tablelist ?-option value …?
-
Exports the content of the Tk tablelist widget tablelist to a .xlsx file. The recognized options are:
-callback command: Command to be called once per workbook and once per column, to customize styles and column properties. See below for the arguments. Default is the built-in callback ::ooxml::tablelist_to_xl_callback. -path path: Directory of the output file. -file filename: Name of the output file (a .xlsx suffix is appended if missing). -creator name: Creator property of the spreadsheet. -name name: Name of the (single) worksheet. -rootonly: Export only the root level of the tablelist (no child items). -addtimestamp: Add a timestamp to the output file name. -globalstyle: Write the cells with the column styles set by the callback.The callback is called with the arguments
spreadsheet sheet maxcol column title width align sortmode hidewhere spreadsheet is the spreadsheet object, sheet the worksheet handle and maxcol the number of columns. It is called once with column = -1 for the whole workbook (for example to set the default date style) and then once per column with the tablelist column properties title, width, align, sortmode and hide.
proc myCallback {spreadsheet sheet maxcol column title width align sortmode hide} { if {$column == -1} { set datestyle [$spreadsheet style -numfmt [$spreadsheet numberformat -datetime]] $spreadsheet defaultdatestyle $datestyle } elseif {$align eq "right"} { $spreadsheet column $sheet -index $column -style [$spreadsheet style -horizontal right] } } - ::ooxml::xl_read file ?-option value …?
-
Reads the given .xlsx file and returns its contents as a flat Tcl array (to be caught with
array set). See RESULT ARRAY for the keys of the returned array. The recognized options are:-valuesonly: Read only the cell values, no formatting, formulas or sheet properties. -keylist: Additionally build the S,k key (see RESULT ARRAY), a dictionary of the non-empty columns per row. -sheets pattern: Read only the worksheets whose zero-based sheet index matches the glob pattern. -sheetnames pattern: Read only the worksheets whose name matches the glob pattern. If neither -sheets nor -sheetnames is given all worksheets are read. -datefmt format: [clock format] string used to convert date cells into the value keys (default "%Y-%m-%d %H:%M:%S"). -as array: Format of the return value. Currently array is the only supported value.A simple example:
array set workbook [::ooxml::xl_read file.xlsx] foreach key [lsort -dictionary [array names workbook 0,v,*]] { lassign [split $key ,] sheet tag row col puts "$row,$col = $workbook($key)" } - ::ooxml::xl_sheets file
-
Returns information about the worksheets of the given .xlsx file without reading any cell data. The result is a Tcl list with two elements per worksheet: the zero-based sheet index and a dictionary with the keys sheetId (the internal sheet id), name (the display name of the worksheet) and rId (the internal relationship id).
foreach {index info} [::ooxml::xl_sheets file.xlsx] { puts "$index: [dict get $info name]" } - ::ooxml::xl_write new ?-option value …?
-
Creates a spreadsheet object command to build a workbook from scratch:
set spreadsheet [::ooxml::xl_write new ?-option value ...?]The recognized options are:
-creator name: The creator property of the spreadsheet. -created timestamp: The creation time property of the spreadsheet. The value is either an integer (seconds, as returned by [clock seconds]) or a date string in local time. -modifiedby name: The modified-by property of the spreadsheet. -modified timestamp: The modification time property of the spreadsheet. For the value see -created. -application name: The application property of the spreadsheet.
The created spreadsheet object commands currently support the following methods:
- autofilter sheet indexFrom indexTo
-
Adds an autofilter (filter and sort controls on the header row) to the worksheet, spanning from cell indexFrom to cell indexTo (see CELL INDEX).
$spreadsheet autofilter $sheet 0,0 0,5 - border ?-option value …?
-
Defines a border style for the current workbook and returns an ID (BORDERID) to refer to that style. The recognized options are:
-list: Returns the list of currently defined border styles instead of a BORDERID. -leftstyle BORDERLINESTYLE -rightstyle BORDERLINESTYLE -topstyle BORDERLINESTYLE -bottomstyle BORDERLINESTYLE -diagonalstyle BORDERLINESTYLE See BORDERLINESTYLE for the valid values. -leftcolor COLOR -rightcolor COLOR -topcolor COLOR -bottomcolor COLOR -diagonalcolor COLOR See COLOR for the valid values. -diagonaldirection (up|down) -tag tagname: Gives the border style a name. This name may be used instead of the returned BORDERID. -
See BORDERLINESTYLE and COLOR for the valid option values.
- cell sheet ?data? ?-option value …?
-
Writes the value data into a cell of the worksheet sheet and returns the position of the written cell as row,column. Without the -index option the cell is placed in the current row at the next column (see CELL INDEX for the autoincrement behaviour). The recognized options are:
-index index: Position of the cell, either as row,column or in Excel notation. Also accepts a bare column number to place the cell in the current row with columns skipped. -style STYLEID: Style of the cell, from the method style. -formula formula: Enter an Excel formula (e.g. "A1+B1"). The data argument is usually empty then, the application computes the value. -formulaidx integer: Shared formula index. A cell defining a shared formula gives -formula, -formularef and -formulaidx; the dependent cells give only -formulaidx. -formularef range: The range the shared formula spans, either in Excel notation (C3:C5) or numerically (2,2:4,2). -string: Store the value as string in any case. -nostring: Override a column-level -string setting for this cell. -nozero: Do not output the value if it is zero. -zero: Override a column-level -nozero setting for this cell. -globalstyle: Apply the column style to this cell. -height height: Sets the row height of the current row. -hyperlink url: Makes the cell a hyperlink to url. -tooltip text: Tooltip for the hyperlink (only used together with -hyperlink). - column sheet ?-option value …?
-
Defines the properties of a column of the worksheet sheet and returns the column number. Without the -index option the next column is used. The recognized options are:
-index index: Column number. -to index: Last column number, if the definition should span a range of columns. -width width: Column width in characters of the standard font (may be fractional, see also ::ooxml::CalcColumnWidth). -style STYLEID: Default style for the cells of the column. Note that a cell only uses it if written with -globalstyle. -bestfit: Sets the bestFit flag of the column. -customwidth: Sets the customWidth flag of the column. -string: Store the values of the cells of this column as string in any case (a cell may override this with -nostring). -nozero: Do not output zero values in this column (a cell may override this with -zero). -calcfit: Calculates the column width from the length of the longest value written to the column (via ::ooxml::CalcColumnWidth) if that is wider than a given -width. - defaultdatestyle STYLEID
-
Sets the default style for date cells. Values recognized as dates are formatted with this style if the cell does not have an explicit -style.
set datestyle [$spreadsheet style -numfmt [$spreadsheet numberformat -datetime]] $spreadsheet defaultdatestyle $datestyle - fill ?-option value …?
-
Defines a fill style for the current workbook and returns an ID (FILLID) to refer to that style. The recognized options are:
-list: Returns the list of currently defined fills instead of a FILLID. -patterntype PATTERNTYPE: See PATTERNTYPE for the usual values (default "none"). -fgcolor COLOR: Foreground (pattern) color. See COLOR for the valid values. -bgcolor COLOR: Background color. See COLOR for the valid values. -tag tagname: Gives the fill a name. This name may be used instead of the returned FILLID. -
See PATTERNTYPE and COLOR for the valid option values.
- font ?-option value …?
-
Defines a font for the current workbook and returns an ID (FONTID) to refer to that font. The recognized options are:
-list: Returns the list of currently defined fonts instead of a FONTID. -name name: Font name (default "Calibri"). -family family: Font family number (default 2). -size size: Font size in points (default 12). -color COLOR: See COLOR for the valid values. -scheme scheme: Font scheme (default "minor"). -bold: Bold text. -italic: Italic text. -underline: Underlined text. -tag tagname: Gives the font a name. This name may be used instead of the returned FONTID. -
See COLOR for the valid -color values.
- freeze sheet index
-
Freezes the panes above and left of the given cell index (see CELL INDEX), so they stay visible while scrolling.
$spreadsheet freeze $sheet 1,0 ;# freeze the first row - merge sheet indexFrom indexTo
-
Merges the cell range with the corners indexFrom and indexTo (see CELL INDEX) into one cell.
$spreadsheet merge $sheet 40,0 40,2 $spreadsheet merge $sheet A42 A44 - numberformat ?-option value …?
-
Defines a number format for the current workbook and returns an ID (NUMFMTID) to refer to that format. The recognized options are:
-format format: Any Excel format string (e.g. {#,##0.00 "€"}). -general: Excel general format. -date: Date format. -time: Time format. -datetime: Date/time format. -iso8601: Date/time in ISO 8601 notation. -number: Integer. -decimal: Decimal number with 2 decimal places. -red: Color negative values red (may be combined with -number and -decimal). -separator: Thousands separators (may be combined with -number and -decimal). -fraction: Fractions. -scientific: Scientific notation. -percent: Percentage. -text, -string: Text format. -tag tagname: Gives the format a name. This name may be used instead of the returned NUMFMTID. - pageMargins sheet ?-option value …?
-
Sets the page margins of the worksheet sheet. The recognized options are:
-left -right -top -bottom -header -footer All options expect a floating point value in inch.If some page margins of a worksheet are set with this method then all margins of that worksheet are set, either from the options given in the method call or from the current pageMarginsDefault values, if a margin was not in the method call.
- pageMarginsDefault ?-option value …?
-
Sets the page margins of all worksheets which do not have individual margin settings. The options are the same as for pageMargins. The default margins are:
Margin Inch left 0.75 right 0.75 top 1 bottom 1 header 0.5 footer 0.5 - pageSetup sheet ?-option value …?
-
Sets the page setup of the worksheet sheet.
Caveat: If no page setup properties at all are set for a sheet, applications use defaults derived from other sources. But if at least one page setup property is explicitly set with this method, the other properties not set will get the default value from the specification, which may be another value than without any page setup at all. For example if you only set the -orientation of a sheet then this may also result in another page size (because the application page size default may differ from the default recommended by the specification, which is Letter paper).
The recognized options are:
-blackAndWhite boolean: Print black and white. Default: false. -cellComments (none|asDisplayed|atEnd): How to print cell comments. Default: none. -copies integer: Number of copies to print. Default: 1. -draft boolean: Print without graphics. Default: false. -errors (displayed|blank|dash|NA): How to print cell values of cells with errors. Default: displayed. -firstPageNumber integer: Page number of the first printed page; see -useFirstPageNumber. Default: 1. -fitToHeight integer: Number of vertical pages to fit on. Default: 1. -fitToWidth integer: Number of horizontal pages to fit on. Default: 1. -horizontalDpi integer: Horizontal print resolution of the device. Default: 600. -orientation (default|portrait|landscape): Orientation of the page. Default: default. -pageOrder (downThenOver|overThenDown): Order of the printed pages. Default: downThenOver. -paperHeight height: Height of custom paper as a number immediately followed by a unit identifier (as 297mm or 11in). No default. -paperWidth width: Width of custom paper as a number immediately followed by a unit identifier (as 210mm or 8.5in). No default. The specification says that when -paperHeight and -paperWidth are specified, the rendering application shall ignore -paperSize. -paperSize paperSizeID: Specifies the paper size. Default: 1 (Letter). See PAPER SIZE IDS for the defined values; the behaviour for other values is implementation-defined. -scale integer: Print scaling in percent. The rendering application may respect only values ranging from 10 to 400. Overridden when -fitToWidth and/or -fitToHeight are in use. Default: 100. -useFirstPageNumber boolean: Use the -firstPageNumber value for the first page number and do not auto number the pages. Default: false. -usePrinterDefaults boolean: Use the printer defaults (or the defaults of the print job). -verticalDpi integer: Vertical print resolution of the device. Default: 600. -
See PAPER SIZE IDS for the possible -paperSize values.
- presetsheets arrayName
-
Creates worksheets from an array previously read with ::ooxml::xl_read, including their data. The array is passed by name (without
$). The sheets are created in their original order. The method adds the key sheetmap to the array: a dict mapping the original sheet index to the newly created worksheet handle. Usually combined with presetstyles:array set workbook [::ooxml::xl_read original.xlsx] set spreadsheet [::ooxml::xl_write new] $spreadsheet presetstyles workbook $spreadsheet presetsheets workbook - presetstyles arrayName
-
Takes over the style definitions (number formats, fonts, fills, borders and cell styles) from an array previously read with ::ooxml::xl_read. The array is passed by name (without
$). - printarea sheet indexFrom indexTo
-
Sets the print area of the worksheet sheet, spanning from cell indexFrom to cell indexTo (see CELL INDEX).
$spreadsheet printarea $sheet A1 C3 $spreadsheet printarea $sheet 1,1 2,2 - row sheet ?-option value …?
-
Starts a new row in the worksheet sheet and returns the row number. Without the -index option the next row is used; the column autoincrement is reset (see CELL INDEX). The recognized options are:
-index index: Row number to jump to. -height height: Row height in points. - rowheight sheet row height
-
Sets the height of the given row (zero-based) of the worksheet sheet to height points, independently of writing cells.
$spreadsheet rowheight $sheet 33 20 - style ?-option value …?
-
Defines a cell style for the current workbook and returns an ID (STYLEID) to refer to that style. The recognized options are:
-list: Returns the list of currently defined styles instead of a STYLEID. -numfmt NUMFMTID: From the method numberformat. -font FONTID: From the method font. -fill FILLID: From the method fill. -border BORDERID: From the method border. -xf XFID: Base cell format record to derive from. -horizontal alignment: Horizontal alignment of the cell content (e.g. left, center, right). -vertical alignment: Vertical alignment of the cell content (e.g. top, center, bottom). -rotate degree: Rotation of the cell content in degrees. -wrap: Enables text wrapping within the cell. -tag tagname: Gives the style a name. This name may be used instead of the returned STYLEID. - view ?-option value …?
-
Sets the workbook view properties. The recognized options are:
-activetab tab: Zero-based index of the worksheet shown when the file is opened. -x twips -y twips: Position of the workbook window. -width twips -height twips: Size of the workbook window. -list: Returns the current view settings instead of setting them. - worksheet name
-
Creates a new worksheet with the given name and returns the sheet handle (SHEETID) used as first argument by the cell related methods. The characters
: \ / ? *in the name are replaced and the name is truncated to the 31 characters allowed by the format. - write filename
-
Writes the spreadsheet to the file filename. If the filename does not have the suffix .xlsx then it is appended. If filename is empty, spreadsheetml.xlsx is used.
RESULT ARRAY
::ooxml::xl_read returns a flat array. In the following key table S stands for the zero-based sheet index and R,C for the zero-based row and column index:
| Key | Content |
|---|---|
| sheets | List of the sheet indices that have been read |
| S,n | Worksheet name |
| S,max_row | Largest used row index of the worksheet |
| S,max_column | Largest used column index of the worksheet |
| S,v,R,C | Cell value (present for every non-empty cell) |
| S,d,R,C | Raw date/time serial if the cell is a date cell |
| S,s,R,C | Style id of the cell |
| S,t,R,C | Cell type (s = shared string) |
| S,c,R,C | Cell position in Excel notation (e.g. B7) |
| S,f,R,C | Formula dict: keys f (formula), i (shared formula index), r (shared formula range) |
| S,l,IDX | Hyperlink dict: keys l (target), t (tooltip) |
| S,k | Dict row -> list of non-empty columns (only with the -keylist option) |
| S,filter | Autofilter ranges |
| S,freeze | Freeze pane position |
| S,merge | List of merged cell ranges |
| S,printarea | Print area range |
| S,rowheight | Row height settings |
| S,cols | Number of column definitions |
| S,col,N | Dict with the properties of column definition N |
| S,pageMargins | Page margin settings |
| S,pageSetup | Page setup settings |
| view | Workbook view settings |
| s,… | Style metadata (s,@ s,styles,N s,fonts,N s,fills,N s,borders,N s,numFmts,N s,numFmtsIds), consumed by presetstyles and presetsheets |
With the -valuesonly option only the sheets, S,n, S,max_row, S,max_column and S,v,R,C keys are present.
CELL INDEX
Methods and options expecting a cell position accept it in two equivalent forms: numerically as row,column with zero-based row and column numbers, or in Excel notation (column letters followed by the one-based row number). 0,0 and A1 describe the same cell, 3,2 and C4 also.
The methods row, column and cell work with an autoincrement mechanism: without an explicit -index option row starts the next row, cell writes to the next column of the current row and column defines the next column. An explicit -index repositions; the autoincrement continues from there.
$spreadsheet row $sheet
$spreadsheet cell $sheet A ;# 0,0
$spreadsheet cell $sheet B -index 4 ;# 0,4 (columns 1-3 stay empty)
$spreadsheet cell $sheet C ;# 0,5
$spreadsheet row $sheet -index 3 ;# jump to row 3
$spreadsheet cell $sheet D ;# 3,0
For writing prefer the autoincrement wherever possible: call
$spreadsheet row $sheet once per row and write the cells in
order without -index. This avoids off-by-one and index
bookkeeping errors.
OPTION VALUE TYPES
Several option values share the same value types. These types are:
COLOR
There are several kinds of valid values:
The value may be auto or none.
If not, the value may be the index number of a predefined color (an integer between 0 and 65 including). See the list below.
If not, the value may be the name of a predefined color. Case is ignored. See the list below.
If not, the value may be a 6 digit hexadecimal number, which is then used as RGB value.
The list of predefined colors is:
| Color ID | Name | (A)RGB |
|---|---|---|
| 0 | Black | 00000000 |
| 1 | White | 00FFFFFF |
| 2 | Red | 00FF0000 |
| 3 | Lime | 0000FF00 |
| 4 | Blue | 000000FF |
| 5 | Yellow | 00FFFF00 |
| 6 | Fuchsia | 00FF00FF |
| 7 | Aqua | 0000FFFF |
| 8 | Black | 00000000 |
| 9 | White | 00FFFFFF |
| 10 | Red | 00FF0000 |
| 11 | Lime | 0000FF00 |
| 12 | Blue | 000000FF |
| 13 | Yellow | 00FFFF00 |
| 14 | Fuchsia | 00FF00FF |
| 15 | Aqua | 0000FFFF |
| 16 | Maroon | 00800000 |
| 17 | Green | 00008000 |
| 18 | Navy | 00000080 |
| 19 | Olive | 00808000 |
| 20 | Purple | 00800080 |
| 21 | Teal | 00008080 |
| 22 | Silver | 00C0C0C0 |
| 23 | Gray | 00808080 |
| 24 | Portage | 009999FF |
| 25 | Lipstick | 00993366 |
| 26 | Cream | 00FFFFCC |
| 27 | LightCyan | 00CCFFFF |
| 28 | Purple | 00660066 |
| 29 | LightCoral | 00FF8080 |
| 30 | NavyBlue | 000066CC |
| 31 | LavenderBlue | 00CCCCFF |
| 32 | Navy | 00000080 |
| 33 | Fuchsia | 00FF00FF |
| 34 | Yellow | 00FFFF00 |
| 35 | Aqua | 0000FFFF |
| 36 | Purple | 00800080 |
| 37 | Maroon | 00800000 |
| 38 | Teal | 00008080 |
| 39 | Blue | 000000FF |
| 40 | DeepSkyBlue | 0000CCFF |
| 41 | LightCyan | 00CCFFFF |
| 42 | BlueRomance | 00CCFFCC |
| 43 | Canary | 00FFFF99 |
| 44 | LightSkyBlue | 0099CCFF |
| 45 | CarnationPink | 00FF99CC |
| 46 | Mauve | 00CC99FF |
| 47 | PeachOrange | 00FFCC99 |
| 48 | RoyalBlue | 003366FF |
| 49 | MediumTurquoise | 0033CCCC |
| 50 | Citrus | 0099CC00 |
| 51 | TangerineYellow | 00FFCC00 |
| 52 | OrangePeel | 00FF9900 |
| 53 | SafetyOrange | 00FF6600 |
| 54 | Scampi | 00666699 |
| 55 | Nobel | 00969696 |
| 56 | PrussianBlue | 00003366 |
| 57 | Eucalyptus | 00339966 |
| 58 | Myrtle | 00003300 |
| 59 | Karaka | 00333300 |
| 60 | SaddleBrown | 00993300 |
| 61 | Lipstick | 00993366 |
| 62 | DarkSlateBlue | 00333399 |
| 63 | NightRider | 00333333 |
| 64 | SystemForeground | n/a |
| 65 | SystemBackground | n/a |
BORDERLINESTYLE
The list of possible values is:
dashDot
dashDotDot
dashed
dotted
double
hair
medium
mediumDashDot
mediumDashDotDot
none
slantDashDot
thick
thin
PATTERNTYPE
An ECMA-376 fill pattern type. The usual values are:
none
solid
darkDown
darkGray
darkGrid
darkHorizontal
darkTrellis
darkUp
darkVertical
gray0625
gray125
lightDown
lightGray
lightGrid
lightHorizontal
lightTrellis
lightUp
lightVertical
mediumGray
PAPER SIZE IDS
The possible -paperSize values and their meaning are:
| Paper Size ID | Paper Size |
|---|---|
| 1 | Letter paper (8.5 in. by 11 in.) |
| 2 | Letter small paper (8.5 in. by 11 in.) |
| 3 | Tabloid paper (11 in. by 17 in.) |
| 4 | Ledger paper (17 in. by 11 in.) |
| 5 | Legal paper (8.5 in. by 14 in.) |
| 6 | Statement paper (5.5 in. by 8.5 in.) |
| 7 | Executive paper (7.25 in. by 10.5 in.) |
| 8 | A3 paper (297 mm by 420 mm) |
| 9 | A4 paper (210 mm by 297 mm) |
| 10 | A4 small paper (210 mm by 297 mm) |
| 11 | A5 paper (148 mm by 210 mm) |
| 12 | B4 paper (250 mm by 353 mm) |
| 13 | B5 paper (176 mm by 250 mm) |
| 14 | Folio paper (8.5 in. by 13 in.) |
| 15 | Quarto paper (215 mm by 275 mm) |
| 16 | Standard paper (10 in. by 14 in.) |
| 17 | Standard paper (11 in. by 17 in.) |
| 18 | Note paper (8.5 in. by 11 in.) |
| 19 | #9 envelope (3.875 in. by 8.875 in.) |
| 20 | #10 envelope (4.125 in. by 9.5 in.) |
| 21 | #11 envelope (4.5 in. by 10.375 in.) |
| 22 | #12 envelope (4.75 in. by 11 in.) |
| 23 | #14 envelope (5 in. by 11.5 in.) |
| 24 | C paper (17 in. by 22 in.) |
| 25 | D paper (22 in. by 34 in.) |
| 26 | E paper (34 in. by 44 in.) |
| 27 | DL envelope (110 mm by 220 mm) |
| 28 | C5 envelope (162 mm by 229 mm) |
| 29 | C3 envelope (324 mm by 458 mm) |
| 30 | C4 envelope (229 mm by 324 mm) |
| 31 | C6 envelope (114 mm by 162 mm) |
| 32 | C65 envelope (114 mm by 229 mm) |
| 33 | B4 envelope (250 mm by 353 mm) |
| 34 | B5 envelope (176 mm by 250 mm) |
| 35 | B6 envelope (176 mm by 125 mm) |
| 36 | Italy envelope (110 mm by 230 mm) |
| 37 | Monarch envelope (3.875 in. by 7.5 in.). |
| 38 | 6 3/4 envelope (3.625 in. by 6.5 in.) |
| 39 | US standard fanfold (14.875 in. by 11 in.) |
| 40 | German standard fanfold (8.5 in. by 12 in.) |
| 41 | German legal fanfold (8.5 in. by 13 in.) |
| 42 | ISO B4 (250 mm by 353 mm) |
| 43 | Japanese double postcard (200 mm by 148 mm) |
| 44 | Standard paper (9 in. by 11 in.) |
| 45 | Standard paper (10 in. by 11 in.) |
| 46 | Standard paper (15 in. by 11 in.) |
| 47 | Invite envelope (220 mm by 220 mm) |
| 50 | Letter extra paper (9.275 in. by 12 in.) |
| 51 | Legal extra paper (9.275 in. by 15 in.) |
| 52 | Tabloid extra paper (11.69 in. by 18 in.) |
| 53 | A4 extra paper (236 mm by 322 mm) |
| 54 | Letter transverse paper (8.275 in. by 11 in.) |
| 55 | A4 transverse paper (210 mm by 297 mm) |
| 56 | Letter extra transverse paper (9.275 in. by 12 in.) |
| 57 | SuperA/SuperA/A4 paper (227 mm by 356 mm) |
| 58 | SuperB/SuperB/A3 paper (305 mm by 487 mm) |
| 59 | Letter plus paper (8.5 in. by 12.69 in.) |
| 60 | A4 plus paper (210 mm by 330 mm) |
| 61 | A5 transverse paper (148 mm by 210 mm) |
| 62 | JIS B5 transverse paper (182 mm by 257 mm) |
| 63 | A3 extra paper (322 mm by 445 mm) |
| 64 | A5 extra paper (174 mm by 235 mm) |
| 65 | ISO B5 extra paper (201 mm by 276 mm) |
| 66 | A2 paper (420 mm by 594 mm) |
| 67 | A3 transverse paper (297 mm by 420 mm) |
| 68 | A3 extra transverse paper (322 mm by 445 mm) |
| 69 | Japanese Double Postcard (200 mm x 148 mm) |
| 70 | A6 (105 mm x 148 mm) |
| 71 | Japanese Envelope Kaku #2 |
| 72 | Japanese Envelope Kaku #3 |
| 73 | Japanese Envelope Chou #3 |
| 74 | Japanese Envelope Chou #4 |
| 75 | Letter Rotated (11 in x 8.5 in) |
| 76 | A3 Rotated (420 mm x 297 mm) |
| 77 | A4 Rotated (297 mm x 210 mm) |
| 78 | A5 Rotated (210 mm x 148 mm) |
| 79 | B4 (JIS) Rotated (364 mm x 257 mm) |
| 80 | B5 (JIS) Rotated (257 mm x 182 mm) |
| 81 | Japanese Postcard Rotated (148 mm x 100 mm) |
| 82 | Double Japanese Postcard Rotated (148 mm x 200 mm) |
| 83 | A6 Rotated (148 mm x 105 mm) |
| 84 | Japanese Envelope Kaku #2 Rotated |
| 85 | Japanese Envelope Kaku #3 Rotated |
| 86 | Japanese Envelope Chou #3 Rotated |
| 87 | Japanese Envelope Chou #4 Rotated |
| 88 | B6 (JIS) (128 mm x 182 mm) |
| 89 | B6 (JIS) Rotated (182 mm x 128 mm) |
| 90 | (12 in x 11 in) |
| 91 | Japanese Envelope You #4 |
| 92 | Japanese Envelope You #4 Rotated |
| 93 | PRC 16K (146 mm x 215 mm) |
| 94 | PRC 32K (97 mm x 151 mm) |
| 95 | PRC 32K(Big) (97 mm x 151 mm) |
| 96 | PRC Envelope #1 (102 mm x 165 mm) |
| 97 | PRC Envelope #2 (102 mm x 176 mm) |
| 98 | PRC Envelope #3 (125 mm x 176 mm) |
| 99 | PRC Envelope #4 (110 mm x 208 mm) |
| 100 | PRC Envelope #5 (110 mm x 220 mm) |
| 101 | PRC Envelope #6 (120 mm x 230 mm) |
| 102 | PRC Envelope #7 (160 mm x 230 mm) |
| 103 | PRC Envelope #8 (120 mm x 309 mm) |
| 104 | PRC Envelope #9 (229 mm x 324 mm) |
| 105 | PRC Envelope #10 (324 mm x 458 mm) |
| 106 | PRC 16K Rotated |
| 107 | PRC 32K Rotated |
| 108 | PRC 32K(Big) Rotated |
| 109 | PRC Envelope #1 Rotated (165 mm x 102 mm) |
| 110 | PRC Envelope #2 Rotated (176 mm x 102 mm) |
| 111 | PRC Envelope #3 Rotated (176 mm x 125 mm) |
| 112 | PRC Envelope #4 Rotated (208 mm x 110 mm) |
| 113 | PRC Envelope #5 Rotated (220 mm x 110 mm) |
| 114 | PRC Envelope #6 Rotated (230 mm x 120 mm) |
| 115 | PRC Envelope #7 Rotated (230 mm x 160 mm) |
| 116 | PRC Envelope #8 Rotated (309 mm x 120 mm) |
| 117 | PRC Envelope #9 Rotated (324 mm x 229 mm) |
| 118 | PRC Envelope #10 Rotated (458 mm x 324 mm) |
DEPENDENCIES
Tcl >= 8.6.7
tdom >= 0.9.0
Reading .xlsx files uses the zlib command built into Tcl and needs no additional package. Only if an archive cannot be handled by the built-in reader (e.g. ZIP64), one of the optional fallback backends is used: the Tcl 9 zipfs, tcllib’s zipfile::decode or tclvfs vfs::zip >= 1.0.4.