Package format

Overview ▾

Package format provides support for parsing and evaluating spreadsheetml/Excel number formats.

Internally spreadsheets store numbers and dates values as a text representation of a floating point number (e.g. 1.2345). This number is then displayed in Excel or another spreadsheet viewer differently depending on the number fornat of the cell style applied to the cell.

As an example, the same value of 1.2345 can be displayed as: - "1" with format "0" - "1.2" with format "0.0" - "1.23" with format "0.00" - "1.235" with format "0.000" - "123%" with format "0%" - "1 23/100" with fornat "0 0/100" - "1.23E+00" with format "0.00E+00" - "29:37:41s" with format `[h]:mm:ss"s"`

func IsNumber

func IsNumber(data string) (isNumber bool)

func Number

func Number(v float64, f string) string

Number is used to format a number with a format string. If the format string is empty, then General number formatting is used which attempts to mimic Excel's general formatting.

func NumberGeneric

func NumberGeneric(v float64) string

NumberGeneric formats the number with the generic format which attemps to mimic Excel's general formatting.

func String

func String(v string, f string) string

String returns the string formatted according to the type. In format strings this is the fourth item, where '@' is used as a placeholder for text.

func Value

func Value(v string, f string) string

Value formats a value as a number or string depending on if it appears to be a number or string.

type FmtType

FmtType is the type of a format token.

type FmtType byte

Format type constants.

const (
    FmtTypeLiteral FmtType = iota

func (FmtType) String

func (i FmtType) String() string

type Format

Format is a parsed number format.

type Format struct {
    Whole         []Token
    Fractional    []Token
    Exponent      []Token
    IsExponential bool
    // contains filtered or unexported fields

func Parse

func Parse(s string) []Format

func (*Format) AddToken

func (f *Format) AddToken(t FmtType, l []byte)

AddToken adds a format token to the format.

type Lexer

type Lexer struct {
    // contains filtered or unexported fields

func (*Lexer) Lex

func (l *Lexer) Lex(r io.Reader)

type Token

Token is a format token in the Excel format string.

type Token struct {
    Type     FmtType
    Literal  byte
    DateTime string