xlsx-0.2.1.2: Simple and incomplete Excel file parser/writer

Safe HaskellNone
LanguageHaskell2010

Codec.Xlsx.Types.StyleSheet

Contents

Description

Support for writing (but not reading) style sheets

Synopsis

The main two types

data StyleSheet Source

StyleSheet 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
  • cellStyleXfs
  • colors
  • dxfs
  • extLst
  • numFmts
  • tableStyles

NOTE: You will probably want to base your style sheet on minimalStyleSheet. See also:

Constructors

StyleSheet 

Fields

_styleSheetBorders :: [Border]

This element contains borders formatting information, specifying all border definitions for all cells in the workbook.

Section 18.8.5, "borders (Borders)" (p. 1760)

_styleSheetCellXfs :: [CellXf]

Cell formats

This 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.

Section 18.8.10, "cellXfs (Cell Formats)" (p. 1764)

_styleSheetFills :: [Fill]

This 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)

_styleSheetFonts :: [Font]

This element contains all font definitions for this workbook.

Section 18.8.23 "fonts (Fonts)" (p. 1769)

data CellXf Source

Cell formatting

TODO: The extLst field is currently unsupported.

Section 18.8.45 "xf (Format)" (p. 1800)

Constructors

CellXf 

Fields

_cellXfApplyAlignment :: Maybe Bool

A boolean value indicating whether the alignment formatting specified for this xf should be applied.

_cellXfApplyBorder :: Maybe Bool

A boolean value indicating whether the border formatting specified for this xf should be applied.

_cellXfApplyFill :: Maybe Bool

A boolean value indicating whether the fill formatting specified for this xf should be applied.

_cellXfApplyFont :: Maybe Bool

A boolean value indicating whether the font formatting specified for this xf should be applied.

_cellXfApplyNumberFormat :: Maybe Bool

A boolean value indicating whether the number formatting specified for this xf should be applied.

_cellXfApplyProtection :: Maybe Bool

A boolean value indicating whether the protection formatting specified for this xf should be applied.

_cellXfBorderId :: Maybe Int

Zero-based index of the border record used by this cell format.

(18.18.2, p. 2437).

_cellXfFillId :: Maybe Int

Zero-based index of the fill record used by this cell format.

(18.18.30, p. 2455)

_cellXfFontId :: Maybe Int

Zero-based index of the font record used by this cell format.

An integer that represents a zero based index into the styleSheetFonts collection in the style sheet (18.18.32, p. 2456).

_cellXfNumFmtId :: Maybe Int

Id 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.

TODO: The numFmts part of the style sheet is currently not implemented.

_cellXfPivotButton :: Maybe Bool

A boolean value indicating whether the cell rendering includes a pivot table dropdown button.

_cellXfQuotePrefix :: Maybe Bool

A 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.

_cellXfId :: Maybe Int

For 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.

Not 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.

_cellXfAlignment :: Maybe Alignment

Formatting 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.

_cellXfProtection :: Maybe Protection

Contains 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.

minimalStyleSheet :: StyleSheet Source

Minimal style sheet

Excel expects some minimal definitions in the stylesheet; you probably want to define your own stylesheets based on this one.

This 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.

Supporting record types

data Alignment Source

Alignment

See 18.8.1 "alignment (Alignment)" (p. 1754)

Constructors

Alignment 

Fields

_alignmentHorizontal :: Maybe CellHorizontalAlignment

Specifies the type of horizontal alignment in cells.

_alignmentIndent :: Maybe Int

An 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.

_alignmentJustifyLastLine :: Maybe Bool

A 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.)

_alignmentReadingOrder :: Maybe ReadingOrder

An integer value indicating whether the reading order (bidirectionality) of the cell is leftto- right, right-to-left, or context dependent.

_alignmentRelativeIndent :: Maybe Int

An integer value (used only in a dxf element) to indicate the additional number of spaces of indentation to adjust for text in a cell.

_alignmentShrinkToFit :: Maybe Bool

A 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.

_alignmentTextRotation :: Maybe Int

Text 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.

_alignmentVertical :: Maybe CellVerticalAlignment

Vertical alignment in cells.

_alignmentWrapText :: Maybe Bool

A boolean value indicating if the text in a cell should be line-wrapped within the cell.

Instances

data Border Source

Expresses 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)

Constructors

Border 

Fields

_borderDiagonalDown :: Maybe Bool

A 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.

_borderDiagonalUp :: Maybe Bool

A 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.

_borderOutline :: Maybe Bool

A boolean value indicating if left, right, top, and bottom borders should be applied only to outside borders of a cell range.

_borderBottom :: Maybe BorderStyle

Bottom border

_borderDiagonal :: Maybe BorderStyle

Diagonal

_borderEnd :: Maybe BorderStyle

Trailing edge border

See also borderRight

_borderHorizontal :: Maybe BorderStyle

Horizontal inner borders

_borderLeft :: Maybe BorderStyle

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 borderStart.

_borderRight :: Maybe BorderStyle

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 borderEnd.

_borderStart :: Maybe BorderStyle

Leading edge border

See also borderLeft

_borderTop :: Maybe BorderStyle

Top border

_borderVertical :: Maybe BorderStyle

Vertical inner border

Instances

data Color Source

One of the colors associated with the data bar or color scale.

The indexed attribute (used for backwards compatibility only) is not modelled here.

See 18.3.1.15 "color (Data Bar Color)" (p. 1608)

Constructors

Color 

Fields

_colorAutomatic :: Maybe Bool

A boolean value indicating the color is automatic and system color dependent.

_colorARGB :: Maybe Text

Standard 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).

_colorTheme :: Maybe Int

A zero-based index into the clrScheme collection (20.1.6.2), referencing a particular sysClr or srgbClr value expressed in the Theme part.

_colorTint :: Maybe Double

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.

Instances

data Fill Source

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)

Constructors

Fill 

Instances

data FillPattern Source

This 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.

Section 18.8.32 "patternFill (Pattern)" (p. 1793)

data Font Source

This element defines the properties for one of the fonts used in this workbook.

Section 18.2.22 "font (Font)" (p. 1769)

Constructors

Font 

Fields

_fontBold :: Maybe Bool

Displays characters in bold face font style.

_fontCharset :: Maybe Int

This 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.

_fontColor :: Maybe Color

Color

_fontCondense :: Maybe Bool

Macintosh 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.

_fontExtend :: Maybe Bool

This 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.

_fontFamily :: Maybe FontFamily

The 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.

_fontItalic :: Maybe Bool

Displays characters in italic font style. The italic style is defined by the font at a system level and is not specified by ECMA-376.

_fontName :: Maybe Text

This 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.

_fontOutline :: Maybe Bool

This element displays only the inner and outer borders of each character. This is very similar to Bold in behavior.

_fontScheme :: Maybe FontScheme

Defines 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.

_fontShadow :: Maybe Bool

Macintosh 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.

_fontStrikeThrough :: Maybe Bool

This element draws a strikethrough line through the horizontal middle of the text.

_fontSize :: Maybe Double

This element represents the point size (1/72 of an inch) of the Latin and East Asian text.

_fontUnderline :: Maybe FontUnderline

This element represents the underline formatting style.

_fontVertAlign :: Maybe FontVerticalAlignment

This 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.

Instances

data NumberFormat Source

Constructors

NfGeneral
0 General
NfZero
1 0
Nf2Decimal
2 0.00
NfMax3Decimal
3 #,##0
NfThousandSeparator2Decimal
4 #,##0.00
NfPercent
9 0%
NfPercent2Decimal
10 0.00%
NfExponent2Decimal
11 0.00E+00
NfSingleSpacedFraction
12 # ?/?
NfDoubleSpacedFraction
13 # ??/??
NfMmDdYy
14 mm-dd-yy
NfDMmmYy
15 d-mmm-yy
NfDMmm
16 d-mmm
NfMmmYy
17 mmm-yy
NfHMm12Hr
18 h:mm AM/PM
NfHMmSs12Hr
19 h:mm:ss AM/PM
NfHMm
20 h:mm
NfHMmSs
21 h:mm:ss
NfMdyHMm
22 m/d/yy h:mm
NfThousandsNegativeParens
37 #,##0 ;(#,##0)
NfThousandsNegativeRed
38 #,##0 ;[Red](#,##0)
NfThousands2DecimalNegativeParens
39 #,##0.00;(#,##0.00)
NfTousands2DecimalNEgativeRed
40 #,##0.00;[Red](#,##0.00)
NfMmSs
45 mm:ss
NfOptHMmSs
46 [h]:mm:ss
NfMmSs1Decimal
47 mmss.0
NfExponent1Decimal
48 ##0.0E+0
NfTextPlaceHolder
49 @

data Protection Source

Protection properties

Contains 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. 1793

Instances

Supporting enumerations

data FontFamily Source

Font family

See 18.8.18 "family (Font Family)" (p. 1766) and 17.18.30 "ST_FontFamily (Font Family Value)" (p. 1388)

Constructors

FontFamilyNotApplicable

Family is not applicable

FontFamilyRoman

Proportional font with serifs

FontFamilySwiss

Proportional font without serifs

FontFamilyModern

Monospace font with or without serifs

FontFamilyScript

Script font designed to mimic the appearance of handwriting

FontFamilyDecorative

Novelty font

data FontScheme Source

Font scheme

See 18.18.33 "ST_FontScheme (Font scheme Styles)" (p. 2456)

Constructors

FontSchemeMajor

This font is the major font for this theme.

FontSchemeMinor

This font is the minor font for this theme.

FontSchemeNone

This font is not a theme font.

Lenses

StyleSheet

CellXf

Alignment

Border

BorderStyle

Color

Fill

FillPattern

Font

Protection