h$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              !!!!!!!!!!!!!!!"""""""""""""""""################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%&&&&&&&' Safe-Inferred5None 6)    None 387)6xlsxrequired attribute parsing7xlsx)parsing optional attributes with defaults8xlsxparsing optional attributesDxlsxAdd sml namespace to name6  /0123456789:;<=>?@ABCD34D512/06789:;<=>?@ABCNone #$87Zxlsx*Add package relationship namespace to nameMNPOQRTSUVXWYZ[UVXWQRTSMNPOYZ[None #$8>8xlsx)Set the namespace for the entire documentThis follows the same policy that the rest of the xlsx package uses.xlsxThe main namespace for Excel hijklmnopqrstuvwxyz{|}~ lmnopjkqrstuvwxyz{|hi}~None 89^xlsx-Add doc props variant types namespace to name  None #$8[xlsx Reading order:See 18.8.1 "alignment (Alignment)" (p. 1754, esp. p. 1755)xlsxIndicates the style of fill pattern being used for a cell format.:Section 18.18.55 "ST_PatternType (Pattern Type)" (p. 2472)xlsxVertical alignmentSee 22.9.2.17 "ST_VerticalAlignRun (Vertical Positioning Location)" (p. 3794)xlsxFont underline property#See 18.4.13 "u (Underline)", p 1728xlsx Font scheme;See 18.18.33 "ST_FontScheme (Font scheme Styles)" (p. 2456)xlsx+This font is the major font for this theme.xlsx+This font is the minor font for this theme.xlsxThis font is not a theme font.xlsx Font familySee 18.8.18 "family (Font Family)" (p. 1766) and 17.18.30 "ST_FontFamily (Font Family Value)" (p. 1388)xlsxFamily is not applicablexlsxProportional font with serifsxlsx Proportional font without serifsxlsx%Monospace font with or without serifsxlsx;Script font designed to mimic the appearance of handwritingxlsx Novelty fontxlsxVertical alignment in cellsSee 18.18.88 "ST_VerticalAlignment (Vertical Alignment Types)" (p. 2512)xlsxHorizontal alignment in cellsSee 18.18.40 "ST_HorizontalAlignment (Horizontal Alignment Type)" (p. 2459)xlsxProtection propertiesContains protection properties associated with the cell. Each cell has protection properties that can be set. The cell protection properties do not take effect unless the sheet has been protected.>Section 18.8.33, "protection (Protection Properties)", p. 1793xlsxImplied number formatsNote: This only implements the predefined values for 18.2.30 "All Languages", other built-in format ids (with id < ) are stored in NfOtherBuiltinxlsx  0 Generalxlsx 1 0xlsx 2 0.00xlsx 3 #,##0xlsx  4 #,##0.00xlsx 9 0%xlsx 10 0.00%xlsx  11 0.00E+00xlsx 12 # ?/?xlsx  13 # ??/??xlsx  14 mm-dd-yyxlsx  15 d-mmm-yyxlsx 16 d-mmmxlsx  17 mmm-yyxlsx  18 h:mm AM/PMxlsx 19 h:mm:ss AM/PMxlsx 20 h:mmxlsx  21 h:mm:ssxlsx 22 m/d/yy h:mmxlsx 37 #,##0 ;(#,##0)xlsx 38 #,##0 ;[Red](#,##0)xlsx 39 #,##0.00;(#,##0.00)xlsx 40 #,##0.00;[Red](#,##0.00)xlsx 45 mm:ssxlsx  46 [h]:mm:ssxlsx  47 mmss.0xlsx  48 ##0.0E+0xlsx 49 @xlsx5other (non local-neutral?) built-in format (id < 164)xlsxThis type gives a high-level version of representation of number format used in $'.xlsxThis element specifies number format properties which indicate how to format and render the numeric value of a cell.2Section 18.8.30 "numFmt (Number Format)" (p. 1777)xlsxA number format code.3Section 18.8.30, "numFmt (Number Format)" (p. 1777)xlsxA single dxf record, expressing incremental formatting to be applied.-Section 18.8.14, "dxf (Formatting)" (p. 1765)xlsxIt seems to be required that this number format entry is duplicated in  of the style sheet, though the spec says nothing explicitly about it.xlsxThis element defines the properties for one of the fonts used in this workbook.'Section 18.2.22 "font (Font)" (p. 1769)xlsx,Displays characters in bold face font style.xlsx9This element defines the font character set of this font.This field is used in font creation and selection if a font of the given facename is not available on the system. Although it is not required to have around when resolving font facename, the information can be stored for when needed to help resolve which font face to use of all available fonts on a system.Charset represents the basic set of characters associated with a font (that it can display), and roughly corresponds to the ANSI codepage (8-bit or DBCS) of that character set used by a given language. Given more common use of Unicode where many fonts support more than one of the traditional charset categories, and the use of font linking, using charset to resolve font name is less and less common, but still can be useful.,These are operating-system-dependent values.Section 18.4.1 "charset (Character Set)" provides some example values.xlsxColorxlsxMacintosh compatibility setting. Represents special word/character rendering on Macintosh, when this flag is set. The effect is to condense the text (squeeze it together). SpreadsheetML applications are not required to render according to this flag.xlsxThis element specifies a compatibility setting used for previous spreadsheet applications, resulting in special word/character rendering on those legacy applications, when this flag is set. The effect extends or stretches out the text. SpreadsheetML applications are not required to render according to this flag.xlsxThe font family this font belongs to. A font family is a set of fonts having common stroke width and serif characteristics. This is system level font information. The font name overrides when there are conflicting values.xlsxDisplays characters in italic font style. The italic style is defined by the font at a system level and is not specified by ECMA-376.xlsx2This element specifies the face name of this font.A string representing the name of the font. If the font doesn't exist (because it isn't installed on the system), or the charset not supported by that font, then another font should be substituted.The string length for this attribute shall be 0 to 31 characters.xlsxThis element displays only the inner and outer borders of each character. This is very similar to Bold in behavior.xlsxDefines the font scheme, if any, to which this font belongs. When a font definition is part of a theme definition, then the font is categorized as either a major or minor font scheme component. When a new theme is chosen, every font that is part of a theme definition is updated to use the new major or minor font definition for that theme. Usually major fonts are used for styles like headings, and minor fonts are used for body and paragraph text.xlsxMacintosh compatibility setting. Represents special word/character rendering on Macintosh, when this flag is set. The effect is to render a shadow behind, beneath and to the right of the text. SpreadsheetML applications are not required to render according to this flag.xlsxThis element draws a strikethrough line through the horizontal middle of the text.xlsxThis element represents the point size (1/72 of an inch) of the Latin and East Asian text.xlsx7This element represents the underline formatting style.xlsxThis element adjusts the vertical position of the text relative to the text's default appearance for this run. It is used to get  superscript or  subscript texts, and shall reduce the font size (if a smaller size is available) accordingly.xlsxThis element is used to specify cell fill information for pattern and solid color cell fills. For solid cell fills (no pattern), fgColor is used. For cell fills with patterns specified, then the cell fill color is specified by the bgColor element.1Section 18.8.32 "patternFill (Pattern)" (p. 1793)xlsx'This element specifies fill formatting.TODO: Gradient fills (18.8.4) are currently unsupported. If we add them, then the spec says (CT_Fill, p. 3935), _either_ a gradient _or_ a solid fill pattern should be specified.(Section 18.8.20, "fill (Fill)" (p. 1768)xlsx>One of the colors associated with the data bar or color scale.The  attribute (used for backwards compatibility only) is not modelled here.0See 18.3.1.15 "color (Data Bar Color)" (p. 1608)xlsxA boolean value indicating the color is automatic and system color dependent.xlsx1Standard Alpha Red Green Blue color value (ARGB).This simple type's contents have a length of exactly 8 hexadecimal digit(s); see "18.18.86 ST_UnsignedIntHex (Hex Unsigned Integer)" (p. 2511).xlsxA zero-based index into the  clrScheme2 collection (20.1.6.2), referencing a particular  sysClr or  srgbClr$ value expressed in the Theme part.xlsx.Specifies the tint value applied to the color.If tint is supplied, then it is applied to the RGB value of the color to determine the final color applied.The tint value is stored as a double from -1.0 .. 1.0, where -1.0 means 100% darken and 1.0 means 100% lighten. Also, 0.0 means no change.xlsxBorder style See  CT_BorderPr (p. 3934)xlsxExpresses a single set of cell border formats (left, right, top, bottom, diagonal). Color is optional. When missing,  automatic is implied.&See 18.8.4 "border (Border)" (p. 1759)xlsxA boolean value indicating if the cell's diagonal border includes a diagonal line, starting at the top left corner of the cell and moving down to the bottom right corner of the cell.xlsxA boolean value indicating if the cell's diagonal border includes a diagonal line, starting at the bottom left corner of the cell and moving up to the top right corner of the cell.xlsxA boolean value indicating if left, right, top, and bottom borders should be applied only to outside borders of a cell range.xlsx Bottom borderxlsxDiagonalxlsxTrailing edge border See also xlsxHorizontal inner bordersxlsx Left border(NOTE: The spec does not formally list a left. border element, but the examples do mention left* and the scheme contains it too. See also .xlsx Right border(NOTE: The spec does not formally list a right. border element, but the examples do mention right* and the scheme contains it too. See also .xlsxLeading edge border See also xlsx Top borderxlsxVertical inner borderxlsx Alignment,See 18.8.1 "alignment (Alignment)" (p. 1754)xlsx4Specifies the type of horizontal alignment in cells.xlsxAn integer value, where an increment of 1 represents 3 spaces. Indicates the number of spaces (of the normal style font) of indentation for text in a cell.xlsxA boolean value indicating if the cells justified or distributed alignment should be used on the last line of text. (This is typical for East Asian alignments but not typical in other contexts.)xlsxAn integer value indicating whether the reading order (bidirectionality) of the cell is leftto- right, right-to-left, or context dependent.xlsxAn integer value (used only in a dxf element) to indicate the additional number of spaces of indentation to adjust for text in a cell.xlsxA boolean value indicating if the displayed text in the cell should be shrunk to fit the cell width. Not applicable when a cell contains multiple lines of text.xlsxText rotation in cells. Expressed in degrees. Values range from 0 to 180. The first letter of the text is considered the center-point of the arc.xlsxVertical alignment in cells.xlsxA boolean value indicating if the text in a cell should be line-wrapped within the cell.xlsxCell formatting TODO: The extLst field is currently unsupported.'Section 18.8.45 "xf (Format)" (p. 1800)xlsxA boolean value indicating whether the alignment formatting specified for this xf should be applied.xlsxA boolean value indicating whether the border formatting specified for this xf should be applied.xlsxA boolean value indicating whether the fill formatting specified for this xf should be applied.xlsxA boolean value indicating whether the font formatting specified for this xf should be applied.xlsxA boolean value indicating whether the number formatting specified for this xf should be applied.xlsxA boolean value indicating whether the protection formatting specified for this xf should be applied.xlsx?Zero-based index of the border record used by this cell format.(18.18.2, p. 2437).xlsx=Zero-based index of the fill record used by this cell format.(18.18.30, p. 2455)xlsx=Zero-based index of the font record used by this cell format.7An integer that represents a zero based index into the 4 collection in the style sheet (18.18.32, p. 2456).xlsxId of the number format (numFmt) record used by this cell format.This simple type defines the identifier to a style sheet number format entry in CT_NumFmts. Number formats are written to the styles part (18.18.47, p. 2468). See also 18.8.31 (p. 1784) for more information on number formats.xlsxA boolean value indicating whether the cell rendering includes a pivot table dropdown button.xlsxA boolean value indicating whether the text string in a cell should be prefixed by a single quote mark (e.g., 'text). In these cases, the quote is not stored in the Shared Strings Part.xlsxFor xf records contained in cellXfs this is the zero-based index of an xf record contained in cellStyleXfs corresponding to the cell style applied to the cell.5Not present for xf records contained in cellStyleXfs.Used by xf records and cellStyle records to reference xf records defined in the cellStyleXfs collection. (18.18.10, p. 2442) TODO: the cellStyleXfs field of a style sheet not currently implemented.xlsxFormatting information pertaining to text alignment in cells. There are a variety of choices for how text is aligned both horizontally and vertically, as well as indentation settings, and so on.xlsxContains protection properties associated with the cell. Each cell has protection properties that can be set. The cell protection properties do not take effect unless the sheet has been protected.xlsxStyleSheet for an XML document;Relevant parts of the EMCA standard (4th edition, part 1,  http://www.ecma-international.org/publications/standards/Ecma-376.htm), page numbers refer to the page in the PDF rather than the page number as printed on the page):Chapter 12, "SpreadsheetML" (p. 74) In particular Section 12.3.20, "Styles Part" (p. 104)Chapter 18, "SpreadsheetML Reference Material" (p. 1528) In particular Section 18.8, "Styles" (p. 1754) and Section 18.8.39 "styleSheet" (Style Sheet)" (p. 1796); it is the latter section that specifies the top-level style sheet format.#TODO: the following child elements: cellStyles cellStyleXfscolorsextLst tableStylesNOTE: Because of undocumented Excel requirements you will probably want to base your style sheet on  (a proper style sheet should have some contents for details see  https://stackoverflow.com/questions/26050708/minimal-style-sheet-for-excel-open-xml-with-datesSO post).  for  includes no contents at all and this could be a problem for Excel. See also:( to translate a  to Styles$) for a higher level interface.* to translate a raw  into StylesxlsxThis element contains borders formatting information, specifying all border definitions for all cells in the workbook.-Section 18.8.5, "borders (Borders)" (p. 1760)xlsx Cell formatsThis element contains the master formatting records (xf) which define the formatting applied to cells in this workbook. These records are the starting point for determining the formatting for a cell. Cells in the Sheet Part reference the xf records by zero-based index.3Section 18.8.10, "cellXfs (Cell Formats)" (p. 1764)xlsxThis element defines the cell fills portion of the Styles part, consisting of a sequence of fill records. A cell fill consists of a background color, foreground color, and pattern to be applied across the cell.*Section 18.8.21, "fills (Fills)" (p. 1768)xlsx=This element contains all font definitions for this workbook.)Section 18.8.23 "fonts (Fonts)" (p. 1769)xlsxDifferential formattingThis element contains the master differential formatting records (dxf's) which define formatting for all non-cell formatting in this workbook. Whereas xf records fully specify a particular aspect of formatting (e.g., cell borders) by referencing those formatting definitions elsewhere in the Styles part, dxf records specify incremental (or differential) aspects of formatting directly inline within the dxf element. The dxf formatting is to be applied on top of or in addition to any formatting already present on the object using the dxf record.+Section 18.8.15, "dxfs (Formats)" (p. 1765)xlsxNumber formatsThis element contains custom number formats defined in this style sheet5Section 18.8.31, "numFmts (Number Formats)" (p. 1784)xlsxBasic number format with predefined number of decimals as format code of number format in xlsx should be less than 255 characters number of decimals shouldn't be more than 253xlsxBasic number format with predefined number of decimals. Works like  with the only difference that extra zeroes are displayed when number of digits after the point is less than the number of digits specified in the formatxlsxMinimal style sheetExcel expects some minimal definitions in the stylesheet; you probably want to define your own stylesheets based on this one.2This more-or-less follows the recommendations at  http://stackoverflow.com/questions/26050708/minimal-style-sheet-for-excel-open-xml-with-dates:, but with some additions based on experimental evidence.xlsxSee CT_CellProtection , p. 4484xlsxSee CT_CellAlignment , p. 4482xlsxSee  CT_NumFmt , p. 3936xlsxSee CT_Dxf , p. 3937xlsxSee CT_Xf , p. 4486xlsxSee  CT_Border , p. 4483xlsxSee CT_PatternFill , p. 4484xlsxSee CT_Fill , p. 4484xlsxSee CT_Color , p. 4484xlsx4See 18.18.94 "ST_FontFamily (Font Family)" (p. 2517)xlsxSee CT_Font , p. 4489xlsxSee  CT_Stylesheet , p. 4482xlsxSee CT_CellProtection , p. 4484xlsxSee  CT_NumFmt , p. 3936xlsxSee CT_Font , p. 4489xlsxSee CT_PatternFill , p. 4484xlsxSee CT_Fill , p. 4484xlsxSee CT_Color , p. 4484xlsxSee  CT_BorderPr , p. 4483xlsxSee  CT_Border , p. 4483xlsxSee CT_CellAlignment , p. 4482xlsxSee CT_Dxf , p. 3937xlsxSee CT_Xf , p. 4486xlsxSee  CT_Stylesheet , p. 4482 None #$8xlsxRun properties0Section 18.4.7, "rPr (Run Properties)" (p. 1725)xlsx,Displays characters in bold face font style.$Section 18.8.2, "b (Bold)" (p. 1757)xlsx9This element defines the font character set of this font.3Section 18.4.1, "charset (Character Set)" (p. 1721)xlsx>One of the colors associated with the data bar or color scale.5Section 18.3.1.15, "color (Data Bar Color)" (p. 1608)xlsxMacintosh compatibility setting. Represents special word/character rendering on Macintosh, when this flag is set. The effect is to condense the text (squeeze it together).0Section 18.8.12, "condense (Condense)" (p. 1764)xlsxThis element specifies a compatibility setting used for previous spreadsheet applications, resulting in special word/character rendering on those legacy applications, when this flag is set. The effect extends or stretches out the text.,Section 18.8.17, "extend (Extend)" (p. 1766)xlsxThe font family this font belongs to. A font family is a set of fonts having common stroke width and serif characteristics. This is system level font information. The font name overrides when there are conflicting values.1Section 18.8.18, "family (Font Family)" (p. 1766)xlsxDisplays characters in italic font style. The italic style is defined by the font at a system level and is not specified by ECMA-376.'Section 18.8.26, "i (Italic)" (p. 1773)xlsxThis element displays only the inner and outer borders of each character. This is very similar to Bold in behavior.-Section 18.4.2, "outline (Outline)" (p. 1722)xlsxThis element is a string representing the name of the font assigned to display this run.(Section 18.4.5, "rFont (Font)" (p. 1724)xlsxDefines the font scheme, if any, to which this font belongs. When a font definition is part of a theme definition, then the font is categorized as either a major or minor font scheme component. When a new theme is chosen, every font that is part of a theme definition is updated to use the new major or minor font definition for that theme. Usually major fonts are used for styles like headings, and minor fonts are used for body and paragraph text.,Section 18.8.35, "scheme (Scheme)" (p. 1794)xlsxMacintosh compatibility setting. Represents special word/character rendering on Macintosh, when this flag is set. The effect is to render a shadow behind, beneath and to the right of the text.,Section 18.8.36, "shadow (Shadow)" (p. 1795)xlsxThis element draws a strikethrough line through the horizontal middle of the text.4Section 18.4.10, "strike (Strike Through)" (p. 1726)xlsxThis element represents the point size (1/72 of an inch) of the Latin and East Asian text.+Section 18.4.11, "sz (Font Size)" (p. 1727)xlsx7This element represents the underline formatting style.*Section 18.4.13, "u (Underline)" (p. 1728)xlsxThis element adjusts the vertical position of the text relative to the text's default appearance for this run. It is used to get  superscript or  subscript texts, and shall reduce the font size (if a smaller size is available) accordingly.;Section 18.4.14, "vertAlign (Vertical Alignment)" (p. 1728)xlsx Rich Text RunThis element represents a run of rich text. A rich text run is a region of text that share a common set of properties, such as formatting properties.-Section 18.4.4, "r (Rich Text Run)" (p. 1724)xlsxThis element represents a set of properties to apply to the contents of this rich text run.xlsxThis element represents the text content shown as part of a string.NOTE:  elements with an empty text field will result in an error when opening the file in Excel.%Section 18.4.12, "t (Text)" (p. 1727)xlsxApply properties to a If the  specifies its own properties, then these overrule the properties specified here. For example, adding bold to a  which is already italic will make the  both  bold and italic@ but adding it to one that that is explicitly _not_ bold will leave the  unchanged.xlsxThe  instance for 4 is biased: later properties override earlier ones.xlsxSee  CT_RPrElt , p. 3903xlsxSee CT_RElt , p. 3903xlsxSee  CT_RPrElt , p. 3903xlsxSee CT_RElt , p. 3903'' None #$8xlsxSheet protection options to enforce and specify that it needs to be protectedTODO: algorithms specified in the spec with hashes, salts and spin countsSee 18.3.1.85 "sheetProtection (Sheet Protection Options)" (p. 1694)xlsxSpecifies the legacy hash of the password required for editing this worksheet.See Part 4, 15.3.1.6 "Additional attribute for sheetProtection element (Part 1, 18.3.1.85)" (p. 229)xlsxthe value of this attribute dictates whether the other attributes of  should be appliedxlsxAutoFilters should not be allowed to operate when the sheet is protectedxlsxdeleting columns should not be allowed when the sheet is protectedxlsxdeleting rows should not be allowed when the sheet is protectedxlsxformatting cells should not be allowed when the sheet is protectedxlsxformatting columns should not be allowed when the sheet is protectedxlsxformatting rows should not be allowed when the sheet is protectedxlsxinserting columns should not be allowed when the sheet is protectedxlsxinserting hyperlinks should not be allowed when the sheet is protectedxlsxinserting rows should not be allowed when the sheet is protectedxlsxediting of objects should not be allowed when the sheet is protectedxlsxPivotTables should not be allowed to operate when the sheet is protectedxlsx:Scenarios should not be edited when the sheet is protectedxlsxselection of locked cells should not be allowed when the sheet is protectedxlsxselection of unlocked cells should not be allowed when the sheet is protectedxlsx9sorting should not be allowed when the sheet is protectedxlsxCreates legacy XOR hashed password.Note: The implementation is known to work only for ASCII symbols, if you know how to encode properly others - an email or a PR will be highly apperciatedSee Part 4, 14.7.1 "Legacy Password Hash Algorithm" (p. 73) and Part 4, 15.2.3 "Additional attributes for workbookProtection element (Part 1, 18.2.29)" (p. 220) and Par 4, 15.3.1.6 "Additional attribute for sheetProtection element (Part 1, 18.3.1.85)" (p. 229)xlsxno sheet protection at allxlsx9protection of all sheet features which could be protected(( None #$8xlsx Paper sizexlsxA2 paper (420 mm by 594 mm)xlsxA3 paper (297 mm by 420 mm)xlsx!A3 extra paper (322 mm by 445 mm)xlsx,A3 extra transverse paper (322 mm by 445 mm)xlsx&A3 transverse paper (297 mm by 420 mm)xlsxA4 paper (210 mm by 297 mm)xlsx!A4 extra paper (236 mm by 322 mm)xlsx A4 plus paper (210 mm by 330 mm)xlsx!A4 small paper (210 mm by 297 mm)xlsx&A4 transverse paper (210 mm by 297 mm)xlsxA5 paper (148 mm by 210 mm)xlsx!A5 extra paper (174 mm by 235 mm)xlsx&A5 transverse paper (148 mm by 210 mm)xlsxB4 paper (250 mm by 353 mm)xlsxB5 paper (176 mm by 250 mm)xlsxC paper (17 in. by 22 in.)xlsxD paper (22 in. by 34 in.)xlsxE paper (34 in. by 44 in.)xlsx&Executive paper (7.25 in. by 10.5 in.)xlsx(German legal fanfold (8.5 in. by 13 in.)xlsx+German standard fanfold (8.5 in. by 12 in.)xlsx*US standard fanfold (14.875 in. by 11 in.)xlsxFolio paper (8.5 in. by 13 in.)xlsxISO B4 (250 mm by 353 mm)xlsx%ISO B5 extra paper (201 mm by 276 mm)xlsx+Japanese double postcard (200 mm by 148 mm)xlsx*JIS B5 transverse paper (182 mm by 257 mm)xlsxLedger paper (17 in. by 11 in.)xlsxLegal paper (8.5 in. by 14 in.)xlsx'Legal extra paper (9.275 in. by 15 in.)xlsx Letter paper (8.5 in. by 11 in.)xlsx(Letter extra paper (9.275 in. by 12 in.)xlsx3Letter extra transverse paper (9.275 in. by 12 in.)xlsx(Letter plus paper (8.5 in. by 12.69 in.)xlsx&Letter small paper (8.5 in. by 11 in.)xlsx-Letter transverse paper (8.275 in. by 11 in.)xlsxNote paper (8.5 in. by 11 in.)xlsxQuarto paper (215 mm by 275 mm)xlsx Standard paper (9 in. by 11 in.)xlsx!Standard paper (10 in. by 11 in.)xlsx!Standard paper (10 in. by 14 in.)xlsx!Standard paper (11 in. by 17 in.)xlsx!Standard paper (15 in. by 11 in.)xlsx$Statement paper (5.5 in. by 8.5 in.)xlsxSuperASuperAA4 paper (227 mm by 356 mm)xlsxSuperBSuperBA3 paper (305 mm by 487 mm)xlsx Tabloid paper (11 in. by 17 in.)xlsx)Tabloid extra paper (11.69 in. by 18 in.)xlsx%6 3/4 envelope (3.625 in. by 6.5 in.)xlsx$#9 envelope (3.875 in. by 8.875 in.)xlsx##10 envelope (4.125 in. by 9.5 in.)xlsx$#11 envelope (4.5 in. by 10.375 in.)xlsx!#12 envelope (4.75 in. by 11 in.)xlsx #14 envelope (5 in. by 11.5 in.)xlsxB4 envelope (250 mm by 353 mm)xlsxB5 envelope (176 mm by 250 mm)xlsxB6 envelope (176 mm by 125 mm)xlsxC3 envelope (324 mm by 458 mm)xlsxC4 envelope (229 mm by 324 mm)xlsxC5 envelope (162 mm by 229 mm)xlsxC6 envelope (114 mm by 162 mm)xlsxC65 envelope (114 mm by 229 mm)xlsxDL envelope (110 mm by 220 mm)xlsx"Invite envelope (220 mm by 220 mm)xlsx!Italy envelope (110 mm by 230 mm)xlsx(Monarch envelope (3.875 in. by 7.5 in.).xlsxSpecifies printed page orderxlsx4Order pages vertically first, then move horizontallyxlsx4Order pages horizontally first, then move verticallyxlsx Print orientation for this sheetxlsx Print errorsThis enumeration specifies how to display cells with errors when printing the worksheet.xlsxDisplay cell errors as blankxlsxDisplay cell errors as dashesxlsx*Display cell errors as displayed on screenxlsxDisplay cell errors as #N/Axlsx Cell commentsThese enumerations specify how cell comments shall be displayed for paper printing purposes.8See 18.18.5 "ST_CellComments (Cell Comments)" (p. 2441).xlsx Print cell comments as displayedxlsx&Print cell comments at end of documentxlsxDo not print cell commentsxlsxPrint black and white.xlsx4This attribute specifies how to print cell comments.xlsxNumber of copies to print.xlsxPrint without graphics.xlsx9Specifies how to print cell values for cells with errors.xlsxPage number for first printed page. If no value is specified, then  automatic is assumed.xlsx#Number of vertical pages to fit on.xlsx%Number of horizontal pages to fit on.xlsx*Horizontal print resolution of the device.xlsx5Relationship Id of the devMode printer settings part.-(Explicit reference to a parent XML element.)See 22.8.2.1 "ST_RelationshipId (Explicit Relationship ID)" (p. 3784)xlsxOrientation of the page.xlsxOrder of printed pagesxlsxHeight of custom paper as a number followed by a unit identifier.When paperHeight and paperWidth are specified, paperSize shall be ignored. Examples: "297mm", "11in".See 22.9.2.12 "ST_PositiveUniversalMeasure (Positive Universal Measurement)" (p. 3792)xlsx Pager sizeWhen paperHeight, paperWidth, and paperUnits are specified, paperSize should be ignored.xlsx?Width of custom paper as a number followed by a unit identifier Examples: 21cm, 8.5inWhen paperHeight and paperWidth are specified, paperSize shall be ignored.xlsxPrint scaling.This attribute is restricted to values ranging from 10 to 400. This setting is overridden when fitToWidth and/or fitToHeight are in use.xlsxUse  value for first page number, and do not auto number the pages.xlsxUse the printer@s defaults settings for page setup values and don't use the default values specified in the schema.Example: If dpi is not present or specified in the XML, the application must not assume 600dpi as specified in the schema as a default and instead must let the printer specify the default dpi.xlsx(Vertical print resolution of the device.xlsxSee ST_Orientation , p. 3923xlsxSee  ST_PrintError , p. 3923xlsxSee ST_CellComments , p. 3923xlsxSee  ST_PageOrder , p. 3923xlsxSee  paperSize (attribute of  pageSetup ), p. 1659xlsxSee  CT_PageSetup , p. 3922xlsxSee  paperSize (attribute of  pageSetup ), p. 1659xlsxSee  ST_PageOrder , p. 3923xlsxSee ST_Orientation , p. 3923xlsxSee  ST_PrintError , p. 3923xlsxSee ST_CellComments , p. 3923xlsxSee  CT_PageSetup , p. 3922 None 8 xlsx'Add custom properties namespace to namexlsxFMTID_UserDefinedProperties   None 8SNone #$8xlsx>Describes relationships according to Open Packaging ConventionSee ECMA-376, 4th Edition Office Open XML File Formats @ Open Packaging Conventionsxlsxjoins relative URI (actually a file path as an internal relation target)xlsx*Add package relationship namespace to namexlsx2Add office document relationship namespace to nameNone #$83xlsx*See 20.1.8.44 "noFill (No Fill)" (p. 2872)xlsx "C") xlsx reverse to  xlsxRender position in  (row, col) format to an Excel reference. mkCellRef (2, 4) == "D2" xlsx reverse to  mkCellRef xlsx reverse to  mkCellRef expecting valid reference and failig with a standard error message like "Bad cell reference XXX" xlsx Render range  mkRange (2, 4) (6, 8) == "D2:H6" xlsx reverse to  xlsxConvertts serial value into datetime according to the specified date base show (dateFromNumber DateBase1900 42929.75) == "2017-07-13 18:00:00 UTC" xlsx#Converts datetime into serial value xlsxSee CT_Rst , p. 3903 xlsxSee CT_Rst , p. 3903 xlsxSee  ST_Formula , p. 3873 xlsxSee  ST_Formula , p. 3873' ' None #$85: xlsxState of the sheet's pane.6Section 18.18.53 "ST_PaneState (Pane State)" (p. 2711) xlsxPanes are frozen, but were not split being frozen. In this state, when the panes are unfrozen again, a single pane results, with no split. In this state, the split bars are not adjustable. xlsxPanes are frozen and were split before being frozen. In this state, when the panes are unfrozen again, the split remains, but is adjustable. xlsxPanes are split, but not frozen. In this state, the split bars are adjustable by the user. xlsx Pane type1Section 18.18.52 "ST_Pane (Pane Types)" (p. 2710) xlsxBottom left pane, when both vertical and horizontal splits are applied.This value is also used when only a horizontal split has been applied, dividing the pane into upper and lower regions. In that case, this value specifies the bottom pane. xlsxTop left pane, when both vertical and horizontal splits are applied.This value is also used when only a horizontal split has been applied, dividing the pane into upper and lower regions. In that case, this value specifies the top pane.This value is also used when only a vertical split has been applied, dividing the pane into right and left regions. In that case, this value specifies the left pane xlsxTop right pane, when both vertical and horizontal splits are applied.This value is also used when only a vertical split has been applied, dividing the pane into right and left regions. In that case, this value specifies the right pane. xlsxView setting of the sheet?Section 18.18.69 "ST_SheetViewType (Sheet View Type)" (p. 2726) xlsx Normal view xlsxPage break preview xlsxPage layout view xlsxWorksheet view pane.Section 18.3.1.66 "pane (View Pane)" (p. 1843) xlsxThe pane that is active. xlsxIndicates whether the pane has horizontal / vertical splits, and whether those splits are frozen. xlsxLocation of the top left visible cell in the bottom right pane (when in Left-To-Right mode). xlsxHorizontal position of the split, in 1/20th of a point; 0 (zero) if none. If the pane is frozen, this value indicates the number of columns visible in the top pane. xlsxVertical position of the split, in 1/20th of a point; 0 (zero) if none. If the pane is frozen, this value indicates the number of rows visible in the left pane. xlsxWorksheet view selection.3Section 18.3.1.78 "selection (Selection)" (p. 1864) xlsxLocation of the active cell xlsx0-based index of the range reference (in the array of references listed in sqref) containing the active cell. Only used when the selection in sqref is not contiguous. Therefore, this value needs to be aware of the order in which the range references are written in sqref.6xlsxSpecifies a unique identifier for the current DrawingML object within the current6TODO: make ids internal and consistent by constructionxlsxSpecifies the name of the object. Typically, this is used to store the original file name of a picture object.xlsxAlternative Text for ObjectxlsxThis element is used to set certain properties related to a drawing element on the client spreadsheet application.1see 20.5.2.3 "clientData (Client Data)" (p. 3156)xlsxThis attribute indicates whether to disable selection on drawing elements when the sheet is protected.xlsxThis attribute indicates whether to print drawing elements when printing the sheet.xlsx2information about image file as a par of a drawingxlsximage filename, images are assumed to be stored under path "xl/media/"xlsximage content type, ECMA-376 advises to use "image/png" or "image/jpeg" if interoperability is wantedxlsximage file contentsxlsx/basic function to create picture drawing objectNote: specification says that drawing element ids need to be unique within 1 document, otherwise /...document shall be considered non-conformant/.xlsxhelper to retrive information about all picture files in particular drawing alongside with their anchorings (i.e. sizes and positions)xlsxsimple drawing object anchoring using one cell as a top lelft corner and dimensions of that objectxlsx+Add Spreadsheet DrawingML namespace to namexlsxSee 18.3.1.10 "cfRule (Conditional Formatting Rule)" (p. 1602)xlsxThis is an index to a dxf element in the Styles Part indicating which cell formatting to apply when the conditional formatting rule criteria is met.xlsxThe priority of this conditional formatting rule. This value is used to determine which format should be evaluated and rendered. Lower numeric values are higher priority than higher numeric values, where 1 is the highest priority.xlsxIf this flag is set, no rules with lower priority shall be applied over this rule, when this rule evaluates to true.xlsx1Describes a data bar conditional formatting rule.,See 18.3.1.28 "dataBar (Data Bar)" (p. 1621)xlsxThe maximum length of the data bar, as a percentage of the cell width.xlsxThe minimum length of the data bar, as a percentage of the cell width.xlsxIndicates whether to show the values of the cells on which this data bar is applied.xlsx*Icon set type for conditional formatting. , fields determine lower range bounds. I.e. :IconSet3Signs (CfPercent 0) (CfPercent 33) (CfPercent 67) say that 1st icon will be shown for values ranging from 0 to 33 percents, 2nd for 33 to 67 percent and the 3rd one for values from 67 to 100 percent. 018.42 "ST_IconSetType (Icon Set Type)" (p. 2463)xlsx23 traffic lights icon set with thick black border.xlsx2Describes an icon set conditional formatting rule.,See 18.3.1.49 "iconSet (Icon Set)" (p. 1645)xlsx icon set used, default value is IconSet3Trafficlights1xlsx!values describing per icon rangesxlsxreverses the default order of the icons in the specified icon setxlsxindicates whether to show the values of the cells on which this icon set is applied.xlsxDescribes the values of the interpolation points in a color scale, data bar or icon set conditional formatting rules.See 18.3.1.11 "cfvo (Conditional Format Value Object)" (p. 1604)xlsx9Conditions which could be used for conditional formatting subelements are ignored)xlsx'index of shared formula in worksheet's wsSharedFormulas propertyxlsx'formula type with type-specific optionsxlsxFormula for the cell.,TODO: array, dataTable formula types support%See 18.3.1.40 "f (Formula)" (p. 1636)xlsx6Specifies that this formula assigns a value to a name.xlsxIndicates that this formula needs to be recalculated the next time calculation is performed. [Example: This is always set on volatile functions, like =RAND(), and circular references.  end example]xlsxMap containing cell values which are indexed by row and column if you need to use more traditional (x,y) indexing please you could use corresponding accessors from '+,None #$8a None  #$8>z9xlsxAutoFilter temporarily hides rows based on a filter criteria, which is applied column by column to a table of datain the worksheet.TODO: sortState, extList9See 18.3.1.2 "autoFilter (AutoFilter Settings)" (p. 1596)xlsx.Specifies concrete type of dynamic filter used>See 18.18.26 "ST_DynamicFilterType (Dynamic Filter)" (p. 2452)xlsx$Shows values that are above average.xlsx$Shows values that are below average.xlsxShows last month's dates.xlsx$Shows last calendar quarter's dates.xlsx;Shows last week's dates, using Sunday as the first weekday.xlsxShows last year's dates.xlsx8Shows the dates that are in January, regardless of year.xlsx8Shows the dates that are in October, regardless of year.xlsx9Shows the dates that are in November, regardless of year.xlsx9Shows the dates that are in December, regardless of year.xlsx9Shows the dates that are in February, regardless of year.xlsx6Shows the dates that are in March, regardless of year.xlsx6Shows the dates that are in April, regardless of year.xlsx4Shows the dates that are in May, regardless of year.xlsx5Shows the dates that are in June, regardless of year.xlsx5Shows the dates that are in July, regardless of year.xlsx7Shows the dates that are in August, regardless of year.xlsx:Shows the dates that are in September, regardless of year.xlsxShows next month's dates.xlsx$Shows next calendar quarter's dates.xlsx;Shows next week's dates, using Sunday as the first weekday.xlsxShows next year's dates.xlsx!Common filter type not available.xlsxShows the dates that are in the 1st calendar quarter, regardless of year.xlsxShows the dates that are in the 2nd calendar quarter, regardless of year.xlsxShows the dates that are in the 3rd calendar quarter, regardless of year.xlsxShows the dates that are in the 4th calendar quarter, regardless of year.xlsxShows this month's dates.xlsx$Shows this calendar quarter's dates.xlsx;Shows this week's dates, using Sunday as the first weekday.xlsxShows this year's dates.xlsxShows today's dates.xlsxShows tomorrow's dates.xlsxShows the dates between the beginning of the year and today, inclusive.xlsxShows yesterday's dates.xlsxSpecifies dynamic filter criteria. These criteria are considered dynamic because they can change, either with the data itself (e.g., "above average") or with the current system date (e.g., show values for "today"). For any cells whose values do not meet the specified criteria, the corresponding rows shall be hidden from view when the filter is applied. shall be required for  DynFilterTday, , , , , , , , , , , , , , , and 'DynFilterYearToDate.The above criteria are based on a value range; that is, if today's date is September 22nd, then the range for thisWeek is the values greater than or equal to September 17 and less than September 24. In the thisWeek range, the lower value is expressed _dfoval&. The higher value is expressed using  _dfoMmaxVal.4These dynamic filters shall not require '_dfoVal or : , , , , , , , , , , , , , ,  and .The above criteria shall not specify the range using valIso and maxValIso because Q1 always starts from M1 to M3, and M1 is always January.These types of dynamic filters shall use valIso and shall not use :  and Note: Specification lists valIso and maxIso to store datetime values but it appears that Excel doesn't use them and stored them as numeric values (as it does for datetimes in cell values)7See 18.3.2.5 "dynamicFilter (Dynamic Filter)" (p. 1715)xlsx+A minimum numeric value for dynamic filter.xlsx#A maximum value for dynamic filter.xlsxSpecifies the color to filter by and whether to use the cell's fill or font color in the filter criteria. If the cell's font or fill color does not match the color specified in the criteria, the rows corresponding to those cells are hidden from view.