InvalidReferenceContext is a Context that can be used when evaluating an invalid reference (e.g. referencing a non-existent sheet). It implements Context safely, but returns error results.
var InvalidReferenceContext = &ivr{}
var ReferenceInvalid = Reference{Type: ReferenceTypeInvalid}
func LexReader(r io.Reader) chan *node
func RegisterFunction(name string, fn Function)
RegisterFunction registers a standard function.
func RegisterFunctionComplex(name string, fn FunctionComplex)
RegisterFunctionComplex registers a standard function.
func SupportedFunctions() []string
SupportedFunctions returns a list of supported functions.
BinOpType is the binary operation operator type
type BinOpType byte
Operator type constants
const ( BinOpTypeUnknown BinOpType = iota BinOpTypePlus BinOpTypeMinus BinOpTypeMult BinOpTypeDiv BinOpTypeExp BinOpTypeLT BinOpTypeGT BinOpTypeEQ BinOpTypeLEQ BinOpTypeGEQ BinOpTypeNE BinOpTypeConcat // '&' in Excel )
func (i BinOpType) String() string
BinaryExpr is a binary expression.
type BinaryExpr struct {
// contains filtered or unexported fields
}
func (b BinaryExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates the binary expression using the context given.
func (b BinaryExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for BinaryExpr.
func (b BinaryExpr) String() string
Eval evaluates the binary expression using the context given.
func (b BinaryExpr) Update(q *update.UpdateQuery) Expression
Update updates references in the BinaryExpr after removing a row/column.
Bool is a boolean expression.
type Bool struct {
// contains filtered or unexported fields
}
func (b Bool) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns a boolean.
func (b Bool) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for Bool.
func (b Bool) String() string
String returns a string representation for Bool.
func (b Bool) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect Bool.
CellRef is a reference to a single cell
type CellRef struct {
// contains filtered or unexported fields
}
func (c CellRef) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of the cell reference.
func (c CellRef) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a cell.
func (c CellRef) String() string
String returns a string representation of CellRef.
func (c CellRef) Update(q *update.UpdateQuery) Expression
Update makes a reference to point to one of the neighboring cells after removing a row/column with respect to the update type.
ConstArrayExpr is a constant array expression.
type ConstArrayExpr struct {
// contains filtered or unexported fields
}
func (c ConstArrayExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of a constant array expression.
func (c ConstArrayExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for ConstArrayExpr.
func (c ConstArrayExpr) String() string
String returns a string representation of ConstArrayExpr.
func (c ConstArrayExpr) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect ConstArrayExpr.
Context is a formula execution context. Formula evaluation uses the context to retreive information from sheets.
type Context interface { // Cell returns the result of evaluating a cell. Cell(ref string, ev Evaluator) Result // Sheet returns an evaluation context for a given sheet name. This is used // when evaluating cells that pull data from other sheets (e.g. ='Sheet 2'!A1). Sheet(name string) Context // GetEpoch returns the time epoch of the context's Workbook. GetEpoch() time.Time // GetFilename returns the full filename of the context's Workbook. GetFilename() string // GetWidth returns a worksheet's column width. GetWidth(colIdx int) float64 // GetFormat returns a cell's format. GetFormat(cellRef string) string // GetLabelPrefix returns cell's label prefix dependent on cell horizontal alignment. GetLabelPrefix(cellRef string) string // GetFormat returns if cell is protected. GetLocked(cellRef string) bool // HasFormula returns if cell contains formula. HasFormula(cellRef string) bool // IsBool returns if cell contains boolean value. IsBool(cellRef string) bool // IsDBCS returns if workbook default language is among DBCS. IsDBCS() bool // LastColumn returns the name of last column which contains data in range of context sheet's given rows. LastColumn(rowFrom, rowTo int) string // LastRow returns the name of last row which contains data in range of context sheet's given columns. LastRow(colFrom string) int // SetLocked returns sets cell's protected attribute. SetLocked(cellRef string, locked bool) // NamedRange returns a named range. NamedRange(name string) Reference // SetOffset is used so that the Context can evaluate cell references // differently when they are not absolute (e.g. not like '$A$5'). See the // shared formula support in Cell for usage. SetOffset(col, row uint32) }
EmptyExpr is an empty expression.
type EmptyExpr struct{}
func (e EmptyExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of an empty expression.
func (e EmptyExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for EmptyExpr.
func (e EmptyExpr) String() string
String returns an empty string for EmptyExpr.
func (e EmptyExpr) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect EmptyExpr.
Error is an error expression.
type Error struct {
// contains filtered or unexported fields
}
func (e Error) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of an error expression.
func (e Error) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for Error.
func (e Error) String() string
String returns an empty string for Error.
func (e Error) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect Error.
ErrorType is a formula evaluation error type.
type ErrorType byte
ErrorType constants.
const ( ErrorTypeValue ErrorType = iota ErrorTypeNull ErrorTypeRef ErrorTypeName ErrorTypeNum ErrorTypeSpill ErrorTypeNA ErrorTypeDivideByZero )
Evaluator is the interface for a formula evaluator. This is needed so we can pass it to the spreadsheet to let it evaluate formula cells before returning the results. NOTE: in order to implement Evaluator without cache embed noCache in it.
type Evaluator interface { Eval(ctx Context, formula string) Result SetCache(key string, value Result) GetFromCache(key string) (Result, bool) LastEvalIsRef() bool }
func NewEvaluator() Evaluator
NewEvaluator constructs a new defEval object which is the default formula evaluator.
type Expression interface { Eval(ctx Context, ev Evaluator) Result Reference(ctx Context, ev Evaluator) Reference String() string Update(updateQuery *update.UpdateQuery) Expression }
func NewBinaryExpr(lhs Expression, op BinOpType, rhs Expression) Expression
NewBinaryExpr constructs a new binary expression with a given operator.
func NewBool(v string) Expression
NewBool constructs a new boolean expression.
func NewCellRef(v string) Expression
NewCellRef constructs a new cell reference.
func NewConstArrayExpr(data [][]Expression) Expression
NewConstArrayExpr constructs a new constant array expression with a given data.
func NewEmptyExpr() Expression
NewEmptyExpr constructs a new empty expression.
func NewError(v string) Expression
NewError constructs a new error expression from a string.
func NewFunction(name string, args []Expression) Expression
NewFunction constructs a new function call expression.
func NewHorizontalRange(v string) Expression
NewHorizontalRange constructs a new full rows range.
func NewNamedRangeRef(v string) Expression
NewNamedRangeRef constructs a new named range reference.
func NewNegate(e Expression) Expression
NewNegate constructs a new negate expression.
func NewNumber(v string) Expression
NewNumber constructs a new number expression.
func NewPrefixExpr(pfx, exp Expression) Expression
NewPrefixExpr constructs an expression with prefix.
func NewPrefixHorizontalRange(pfx Expression, v string) Expression
NewPrefixHorizontalRange constructs a new full rows range with prefix.
func NewPrefixRangeExpr(pfx, from, to Expression) Expression
NewPrefixRangeExpr constructs a new range with prefix.
func NewPrefixVerticalRange(pfx Expression, v string) Expression
NewPrefixVerticalRange constructs a new full columns range with prefix.
func NewRange(from, to Expression) Expression
NewRange constructs a new range.
func NewSheetPrefixExpr(s string) Expression
NewSheetPrefixExpr constructs a new prefix expression.
func NewString(v string) Expression
NewString constructs a new string expression.
func NewVerticalRange(v string) Expression
NewVerticalRange constructs a new full columns range.
func Parse(r io.Reader) Expression
Parse parses an io.Reader to get an Expression. If expression is parsed with an error, nil is returned
func ParseString(s string) Expression
Parse parses a string to get an Expression.
Function is a standard function whose result only depends on its arguments.
type Function func(args []Result) Result
func LookupFunction(name string) Function
LookupFunction looks up and returns a standard function or nil.
FunctionCall is a function call expression.
type FunctionCall struct {
// contains filtered or unexported fields
}
func (f FunctionCall) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of a function call.
func (f FunctionCall) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for FunctionCall.
func (f FunctionCall) String() string
String returns a string representation of FunctionCall expression.
func (f FunctionCall) Update(q *update.UpdateQuery) Expression
Update updates the FunctionCall references after removing a row/column.
FunctionComplex is a function whose result depends on its arguments and the context that it's in. As an example, INDIRECT is a complex function so that INDIRECT("A1") which returns the value of the "A1" cell in a sheet can use the context to reach into the sheet and pull out required values.
type FunctionComplex func(ctx Context, ev Evaluator, args []Result) Result
func LookupFunctionComplex(name string) FunctionComplex
LookupFunctionComplex looks up and returns a complex function or nil.
HorizontalRange is a range expression that when evaluated returns a list of Results from references like 1:4 (all cells from rows 1 to 4).
type HorizontalRange struct {
// contains filtered or unexported fields
}
func (r HorizontalRange) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a horizontal range returning a list of results or an error.
func (r HorizontalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a horizontal range.
func (r HorizontalRange) String() string
String returns a string representation of a horizontal range.
func (r HorizontalRange) Update(q *update.UpdateQuery) Expression
Update updates the horizontal range references after removing a row/column.
type Lexer struct {
// contains filtered or unexported fields
}
func NewLexer() *Lexer
func (l *Lexer) Next() *node
NamedRangeRef is a reference to a named range.
type NamedRangeRef struct {
// contains filtered or unexported fields
}
func (n NamedRangeRef) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of the NamedRangeRef reference.
func (n NamedRangeRef) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a named range.
func (n NamedRangeRef) String() string
String returns a string representation of a named range.
func (n NamedRangeRef) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect named ranges.
Negate is a negate expression like -A1.
type Negate struct {
// contains filtered or unexported fields
}
func (n Negate) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of a Negate expression.
func (n Negate) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for Negate.
func (n Negate) String() string
String returns a string representation for Negate.
func (n Negate) Update(q *update.UpdateQuery) Expression
Update updates references in the Negate after removing a row/column.
Number is a nubmer expression.
type Number struct {
// contains filtered or unexported fields
}
func (n Number) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns a number.
func (n Number) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for Number.
func (n Number) String() string
String returns a string representation of Number.
func (n Number) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect Number.
PrefixExpr is an expression containing reference to another sheet like Sheet1!A1 (the value of the cell A1 from sheet 'Sheet1').
type PrefixExpr struct {
// contains filtered or unexported fields
}
func (p PrefixExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns an expression with prefix.
func (p PrefixExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to an expression with prefix.
func (p PrefixExpr) String() string
String returns a string representation of PrefixExpr.
func (p PrefixExpr) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixExpr after removing a row/column.
PrefixHorizontalRange is a range expression that when evaluated returns a list of Results from references like Sheet1!1:4 (all cells from rows 1 to 4 of sheet 'Sheet1').
type PrefixHorizontalRange struct {
// contains filtered or unexported fields
}
func (r PrefixHorizontalRange) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a horizontal range with prefix returning a list of results or an error.
func (r PrefixHorizontalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a horizontal range with prefix.
func (r PrefixHorizontalRange) String() string
String returns a string representation of a horizontal range with prefix.
func (r PrefixHorizontalRange) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixHorizontalRange after removing a row/column.
PrefixRangeExpr is a range expression that when evaluated returns a list of Results from a given sheet like Sheet1!A1:B4 (all cells from A1 to B4 from a sheet 'Sheet1').
type PrefixRangeExpr struct {
// contains filtered or unexported fields
}
func (p PrefixRangeExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a range with prefix returning a list of results or an error.
func (p PrefixRangeExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a range with prefix.
func (r PrefixRangeExpr) String() string
String returns a string representation of a range with prefix.
func (r PrefixRangeExpr) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixRangeExpr after removing a row/column.
PrefixVerticalRange is a range expression that when evaluated returns a list of Results from references like Sheet1!AA:IJ (all cells from columns AA to IJ of sheet 'Sheet1').
type PrefixVerticalRange struct {
// contains filtered or unexported fields
}
func (r PrefixVerticalRange) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a vertical range with prefix returning a list of results or an error.
func (r PrefixVerticalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a vertical range with prefix.
func (r PrefixVerticalRange) String() string
String returns a string representation of a vertical range with prefix.
func (r PrefixVerticalRange) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixVerticalRange after removing a row/column.
Range is a range expression that when evaluated returns a list of Results.
type Range struct {
// contains filtered or unexported fields
}
func (r Range) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a range returning a list of results or an error.
func (r Range) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a range.
func (r Range) String() string
String returns a string of a range.
func (r Range) Update(q *update.UpdateQuery) Expression
Update updates references in the Range after removing a row/column.
type Reference struct { Type ReferenceType Value string }
func MakeRangeReference(ref string) Reference
ReferenceType is a type of reference
type ReferenceType byte
const ( ReferenceTypeInvalid ReferenceType = iota ReferenceTypeCell ReferenceTypeHorizontalRange ReferenceTypeVerticalRange ReferenceTypeNamedRange ReferenceTypeRange ReferenceTypeSheet )
func (i ReferenceType) String() string
Result is the result of a formula or cell evaluation .
type Result struct { ValueNumber float64 ValueString string ValueList []Result ValueArray [][]Result IsBoolean bool ErrorMessage string Type ResultType Ref Reference }
func Accrintm(args []Result) Result
Accrintm implements the Excel ACCRINTM function.
func Amordegrc(args []Result) Result
Amordegrc implements the Excel AMORDEGRC function.
func Amorlinc(args []Result) Result
Amorlinc implements the Excel AMORLINC function.
func And(args []Result) Result
And is an implementation of the Excel AND() function.
func Arabic(args []Result) Result
Arabic implements the Excel ARABIC function which parses roman numerals. It accepts one numeric argument.
func Atan2(args []Result) Result
Atan2 implements the Excel ATAN2 function. It accepts two numeric arguments, and the arguments are (x,y), reversed from normal to match Excel's behaviour.
func Average(args []Result) Result
Average implements the AVERAGE function. It differs slightly from Excel (and agrees with LibreOffice) in that boolean values are counted. As an example, AVERAGE of two cells containing TRUE & FALSE is 0.5 in LibreOffice and #DIV/0! in Excel. unioffice will return 0.5 in this case.
func Averagea(args []Result) Result
Averagea implements the AVERAGEA function, AVERAGEA counts cells that contain text as a zero where AVERAGE ignores them entirely.
func Base(args []Result) Result
Base is an implementation of the Excel BASE function that returns a string form of an integer in a specified base and of a minimum length with padded zeros.
func Ceiling(args []Result) Result
Ceiling is an implementation of the CEILING function which returns the ceiling of a number.
func CeilingMath(args []Result) Result
CeilingMath implements _xlfn.CEILING.MATH which rounds numbers to the nearest multiple of the second argument, toward or away from zero as specified by the third argument.
func CeilingPrecise(args []Result) Result
CeilingPrecise is an implementation of the CEILING.PRECISE function which returns the ceiling of a number.
func Cell(ctx Context, ev Evaluator, args []Result) Result
Cell is an implementation of the Excel CELL function that returns information about the formatting, location, or contents of a cell.
func Char(args []Result) Result
Char is an implementation of the Excel CHAR function that takes an integer in the range [0,255] and returns the corresponding ASCII character.
func Choose(args []Result) Result
Choose implements the Excel CHOOSE function.
func Clean(args []Result) Result
Clean is an implementation of the Excel CLEAN function that removes unprintable characters.
func Code(args []Result) Result
Code is an implementation of the Excel CODE function that returns the first character of the string as a number.
func Column(args []Result) Result
Column implements the Excel COLUMN function.
func Columns(args []Result) Result
Columns implements the Excel COLUMNS function.
func Combin(args []Result) Result
Combin is an implementation of the Excel COMBINA function whic returns the number of combinations.
func Combina(args []Result) Result
Combina is an implementation of the Excel COMBINA function whic returns the number of combinations with repetitions.
func Concat(args []Result) Result
Concat is an implementation of the Excel CONCAT() and deprecated CONCATENATE() function.
func Count(args []Result) Result
Count implements the COUNT function.
func CountBlank(args []Result) Result
CountBlank implements the COUNTBLANK function.
func CountIf(args []Result) Result
CountIf implements the COUNTIF function.
func CountIfs(args []Result) Result
CountIfs implements the COUNTIFS function.
func Counta(args []Result) Result
Counta implements the COUNTA function.
func Coupdaybs(args []Result) Result
Coupdaybs implements the Excel COUPDAYBS function.
func Coupdays(args []Result) Result
Coupdays implements the Excel COUPDAYS function.
func Coupdaysnc(args []Result) Result
Coupdaysnc implements the Excel COUPDAYSNC function.
func Coupncd(args []Result) Result
Coupncd implements the Excel COUPNCD function.
func Coupnum(args []Result) Result
Coupnum implements the Excel COUPNUM function.
func Couppcd(args []Result) Result
Couppcd implements the Excel COUPPCD function.
func Cumipmt(args []Result) Result
Cumipmt implements the Excel CUMIPMT function.
func Cumprinc(args []Result) Result
Cumprinc implements the Excel CUMPRINC function.
func Date(args []Result) Result
Date is an implementation of the Excel DATE() function.
func DateDif(args []Result) Result
DateDif is an implementation of the Excel DATEDIF() function.
func DateValue(args []Result) Result
DateValue is an implementation of the Excel DATEVALUE() function.
func Day(args []Result) Result
Day is an implementation of the Excel DAY() function.
func Days(args []Result) Result
Days is an implementation of the Excel DAYS() function.
func Db(args []Result) Result
Db implements the Excel DB function.
func Ddb(args []Result) Result
Ddb implements the Excel DDB function.
func Decimal(args []Result) Result
Decimal is an implementation of the Excel function DECIMAL() that parses a string in a given base and returns the numeric result.
func Degrees(args []Result) Result
Degrees is an implementation of the Excel function DEGREES() that converts radians to degrees.
func Disc(args []Result) Result
Disc implements the Excel DISC function.
func Dollarde(args []Result) Result
Dollarde implements the Excel DOLLARDE function.
func Dollarfr(args []Result) Result
Dollarfr implements the Excel DOLLARFR function.
func Duration(args []Result) Result
Duration implements the Excel DURATION function.
func Edate(args []Result) Result
Edate is an implementation of the Excel EDATE() function.
func Effect(args []Result) Result
Effect implements the Excel EFFECT function.
func Eomonth(args []Result) Result
Eomonth is an implementation of the Excel EOMONTH() function.
func Even(args []Result) Result
Even is an implementation of the Excel EVEN() that rounds a number to the nearest even integer.
func Exact(args []Result) Result
Exact is an implementation of the Excel EXACT() which compares two strings.
func Fact(args []Result) Result
Fact is an implementation of the excel FACT function which returns the factorial of a positive numeric input.
func FactDouble(args []Result) Result
FactDouble is an implementation of the excel FACTDOUBLE function which returns the double factorial of a positive numeric input.
func False(args []Result) Result
False is an implementation of the Excel FALSE() function. It takes no arguments.
func Find(args []Result) Result
Find is an implementation of the Excel FIND().
func Findb(ctx Context, ev Evaluator, args []Result) Result
Findb is an implementation of the Excel FINDB().
func Floor(args []Result) Result
Floor is an implementation of the FlOOR function.
func FloorMath(args []Result) Result
FloorMath implements _xlfn.FLOOR.MATH which rounds numbers down to the nearest multiple of the second argument, toward or away from zero as specified by the third argument.
func FloorPrecise(args []Result) Result
FloorPrecise is an implementation of the FlOOR.PRECISE function.
func Fv(args []Result) Result
Fv implements the Excel FV function.
func Fvschedule(args []Result) Result
Fvschedule implements the Excel FVSCHEDULE function.
func GCD(args []Result) Result
GCD implements the Excel GCD() function which returns the greatest common divisor of a range of numbers.
func HLookup(args []Result) Result
HLookup implements the HLOOKUP function that returns a matching value from a row in an array.
func If(args []Result) Result
If is an implementation of the Excel IF() function. It takes one, two or three arguments.
func IfError(args []Result) Result
IfError is an implementation of the Excel IFERROR() function. It takes two arguments.
func IfNA(args []Result) Result
IfNA is an implementation of the Excel IFNA() function. It takes two arguments.
func Ifs(args []Result) Result
Ifs is an implementation of the Excel IFS() function.
func Index(args []Result) Result
Index implements the Excel INDEX function.
func Indirect(ctx Context, ev Evaluator, args []Result) Result
Indirect is an implementation of the Excel INDIRECT function that returns the contents of a cell.
func Int(args []Result) Result
Int is an implementation of the Excel INT() function that rounds a number down to an integer.
func Intrate(args []Result) Result
Intrate implements the Excel INTRATE function.
func Ipmt(args []Result) Result
Ipmt implements the Excel IPMT function.
func Irr(args []Result) Result
Irr implements the Excel IRR function.
func IsBlank(args []Result) Result
ISBLANK is an implementation of the Excel ISBLANK() function.
func IsErr(args []Result) Result
ISERR is an implementation of the Excel ISERR() function.
func IsError(args []Result) Result
ISERROR is an implementation of the Excel ISERROR() function.
func IsEven(args []Result) Result
ISEVEN is an implementation of the Excel ISEVEN() function.
func IsFormula(ctx Context, ev Evaluator, args []Result) Result
ISFORMULA is an implementation of the Excel ISFORMULA() function.
func IsLeapYear(ctx Context, ev Evaluator, args []Result) Result
IsLeapYear is an implementation of the Excel ISLEAPYEAR() function.
func IsLogical(ctx Context, ev Evaluator, args []Result) Result
IsLogical is an implementation of the Excel ISLOGICAL() function.
func IsNA(args []Result) Result
IsNA is an implementation of the Excel ISNA() function.
func IsNonText(args []Result) Result
ISNONTEXT is an implementation of the Excel ISNONTEXT() function.
func IsNumber(args []Result) Result
ISNUMBER is an implementation of the Excel ISNUMBER() function.
func IsOdd(args []Result) Result
ISODD is an implementation of the Excel ISODD() function.
func IsRef(ctx Context, ev Evaluator, args []Result) Result
ISREF is an implementation of the Excel ISREF() function.
func IsText(args []Result) Result
ISTEXT is an implementation of the Excel ISTEXT() function.
func Ispmt(args []Result) Result
Ispmt implements the Excel ISPMT function.
func LCM(args []Result) Result
LCM implements the Excel LCM() function which returns the least common multiple of a range of numbers.
func Large(args []Result) Result
Large implements the Excel LARGE function.
func Left(args []Result) Result
Left implements the Excel LEFT(string,[n]) function which returns the leftmost n characters.
func Len(args []Result) Result
Len is an implementation of the Excel LEN function that returns length of a string
func Log(args []Result) Result
Log implements the Excel LOG function which returns the log of a number. By default the result is base 10, however the second argument to the function can specify a different base.
func Lookup(args []Result) Result
Lookup implements the LOOKUP function that returns a matching value from a column, or from the same index in a second column.
func Lower(args []Result) Result
Lower is an implementation of the Excel LOWER function that returns a lower case version of a string.
func MDeterm(args []Result) Result
MDeterm is an implementation of the Excel MDETERM which finds the determinant of a matrix.
func MakeArrayResult(arr [][]Result) Result
MakeArrayResult constructs an array result (matrix).
func MakeBoolResult(b bool) Result
MakeBoolResult constructs a boolean result (internally a number).
func MakeEmptyResult() Result
MakeEmptyResult is ued when parsing an empty argument.
func MakeErrorResult(msg string) Result
MakeErrorResult constructs a #VALUE! error with a given extra error message. The error message is for debugging formula evaluation only and is not stored in the sheet.
func MakeErrorResultType(t ErrorType, msg string) Result
MakeErrorResultType makes an error result of a given type with a specified debug message
func MakeListResult(list []Result) Result
MakeListResult constructs a list result.
func MakeNumberResult(v float64) Result
MakeNumberResult constructs a number result.
func MakeStringResult(s string) Result
MakeStringResult constructs a string result.
func Match(args []Result) Result
Match implements the MATCH function.
func Max(args []Result) Result
Max is an implementation of the Excel MAX() function.
func MaxA(args []Result) Result
MaxA is an implementation of the Excel MAXA() function.
func MaxIfs(args []Result) Result
MaxIfs implements the MAXIFS function.
func Mduration(args []Result) Result
Mduration implements the Excel MDURATION function.
func Median(args []Result) Result
Median implements the MEDIAN function that returns the median of a range of values.
func Mid(args []Result) Result
Mid is an implementation of the Excel MID function that returns a copy of the string with each word capitalized.
func Min(args []Result) Result
Min is an implementation of the Excel MIN() function.
func MinA(args []Result) Result
MinA is an implementation of the Excel MINA() function.
func MinIfs(args []Result) Result
MinIfs implements the MINIFS function.
func Minute(args []Result) Result
Minute is an implementation of the Excel MINUTE() function.
func Mirr(args []Result) Result
Mirr implements the Excel MIRR function.
func Mod(args []Result) Result
Mod is an implementation of the Excel MOD function which returns the remainder after division. It requires two numeric argumnts.
func Month(args []Result) Result
Month is an implementation of the Excel MONTH() function.
func Mround(args []Result) Result
Mround is an implementation of the Excel MROUND function. It is not a generic rounding function and has some oddities to match Excel's behavior.
func Multinomial(args []Result) Result
Multinomial implements the excel MULTINOMIAL function.
func Munit(args []Result) Result
Munit is an implementation of the Excel MUNIT function that returns an identity matrix.
func NA(args []Result) Result
NA is an implementation of the Excel NA() function that just returns the #N/A! error.
func Nominal(args []Result) Result
Nominal implements the Excel NOMINAL function.
func Not(args []Result) Result
Not is an implementation of the Excel NOT() function and takes a single argument.
func Now(args []Result) Result
Now is an implementation of the Excel NOW() function.
func Nper(args []Result) Result
Nper implements the Excel NPER function.
func Npv(args []Result) Result
Npv implements the Excel NPV function.
func Odd(args []Result) Result
Odd is an implementation of the Excel ODD() that rounds a number to the nearest odd integer.
func Oddlprice(args []Result) Result
Oddlprice implements the Excel ODDLPRICE function.
func Oddlyield(args []Result) Result
Oddlyield implements the Excel ODDLYIELD function.
func Offset(ctx Context, ev Evaluator, args []Result) Result
Offset is an implementation of the Excel OFFSET function.
func Or(args []Result) Result
Or is an implementation of the Excel OR() function and takes a variable number of arguments.
func Pduration(args []Result) Result
Pduration implements the Excel PDURATION function.
func Pi(args []Result) Result
Pi is an implementation of the Excel Pi() function that just returns the Pi constant.
func Pmt(args []Result) Result
Pmt implements the Excel PMT function.
func Power(args []Result) Result
Power is an implementation of the Excel POWER function that raises a number to a power. It requires two numeric arguments.
func Ppmt(args []Result) Result
Ppmt implements the Excel PPPMT function.
func Price(args []Result) Result
Price implements the Excel PRICE function.
func Pricedisc(args []Result) Result
Pricedisc implements the Excel PRICEDISC function.
func Pricemat(args []Result) Result
Pricemat implements the Excel PRICEMAT function.
func Product(args []Result) Result
Product is an implementation of the Excel PRODUCT() function.
func Proper(args []Result) Result
Proper is an implementation of the Excel PROPER function that returns a copy of the string with each word capitalized.
func Pv(args []Result) Result
Pv implements the Excel PV function.
func Quotient(args []Result) Result
Quotient is an implementation of the Excel QUOTIENT function that returns the integer portion of division.
func Radians(args []Result) Result
Radians is an implementation of the Excel function RADIANS() that converts degrees to radians.
func Rand(args []Result) Result
Rand is an implementation of the Excel RAND() function that returns random numbers in the range [0,1).
func RandBetween(args []Result) Result
RandBetween is an implementation of the Excel RANDBETWEEN() function that returns a random integer in the range specified.
func Rate(args []Result) Result
Rate implements the Excel RATE function.
func Received(args []Result) Result
Received implements the Excel RECEIVED function.
func Replace(args []Result) Result
Replace is an implementation of the Excel REPLACE().
func Rept(args []Result) Result
Rept is an implementation of the Excel REPT function that returns n copies of a string.
func Right(args []Result) Result
Right implements the Excel RIGHT(string,[n]) function which returns the rightmost n characters.
func Roman(args []Result) Result
Roman is an implementation of the Excel ROMAN function that convers numbers to roman numerals in one of 5 formats.
func Round(args []Result) Result
Round is an implementation of the Excel ROUND function that rounds a number to a specified number of digits.
func RoundDown(args []Result) Result
RoundDown is an implementation of the Excel ROUNDDOWN function that rounds a number down to a specified number of digits.
func RoundUp(args []Result) Result
RoundUp is an implementation of the Excel ROUNDUP function that rounds a number up to a specified number of digits.
func Row(args []Result) Result
Row implements the Excel ROW function.
func Rows(args []Result) Result
Rows implements the Excel ROWS function.
func Rri(args []Result) Result
Rri implements the Excel RRI function.
func Search(args []Result) Result
Search is an implementation of the Excel SEARCH().
func Searchb(ctx Context, ev Evaluator, args []Result) Result
Searchb is an implementation of the Excel SEARCHB().
func SeriesSum(args []Result) Result
SeriesSum implements the Excel SERIESSUM function.
func Sign(args []Result) Result
func Sln(args []Result) Result
Sln implements the Excel SLN function.
func Small(args []Result) Result
Small implements the Excel SMALL function.
func Substitute(args []Result) Result
Substitute is an implementation of the Excel SUBSTITUTE function.
func Sum(args []Result) Result
Sum is an implementation of the Excel SUM() function.
func SumIf(args []Result) Result
SumIf implements the SUMIF function.
func SumIfs(args []Result) Result
SumIfs implements the SUMIFS function.
func SumProduct(args []Result) Result
SumProduct is an implementation of the Excel SUMPRODUCT() function.
func SumSquares(args []Result) Result
SumSquares is an implementation of the Excel SUMSQ() function.
func Syd(args []Result) Result
Syd implements the Excel SYD function.
func T(args []Result) Result
T is an implementation of the Excel T function that returns whether the argument is text.
func Tbilleq(args []Result) Result
Tbilleq implements the Excel TBILLEQ function.
func Tbillprice(args []Result) Result
Tbillprice implements the Excel TBILLPRICE function.
func Tbillyield(args []Result) Result
Tbillyield implements the Excel TBILLYIELD function.
func Text(args []Result) Result
Text is an implementation of the Excel TEXT function.
func TextJoin(args []Result) Result
TextJoin is an implementation of the Excel TEXTJOIN function.
func Time(args []Result) Result
Time is an implementation of the Excel TIME() function.
func TimeValue(args []Result) Result
TimeValue is an implementation of the Excel TIMEVALUE() function.
func Today(args []Result) Result
Today is an implementation of the Excel TODAY() function.
func Transpose(args []Result) Result
Transpose implements the TRANSPOSE function that transposes a cell range.
func Trim(args []Result) Result
Trim is an implementation of the Excel TRIM function that removes leading, trailing and consecutive spaces.
func True(args []Result) Result
True is an implementation of the Excel TRUE() function. It takes no arguments.
func Trunc(args []Result) Result
func Unicode(args []Result) Result
func Upper(args []Result) Result
Upper is an implementation of the Excel UPPER function that returns a upper case version of a string.
func VLookup(args []Result) Result
VLookup implements the VLOOKUP function that returns a matching value from a column in an array.
func Value(args []Result) Result
Value is an implementation of the Excel VALUE function.
func Vdb(args []Result) Result
Vdb implements the Excel VDB function.
func Xirr(args []Result) Result
Xirr implements the Excel XIRR function.
func Xnpv(args []Result) Result
Xnpv implements the Excel XNPV function.
func Xor(args []Result) Result
Xor is an implementation of the Excel XOR() function and takes a variable number of arguments. It's odd to say the least. If any argument is numeric, it returns true if the number of non-zero numeric arguments is odd and false otherwise. If no argument is numeric, it returns an error.
func Year(ctx Context, ev Evaluator, args []Result) Result
Year is an implementation of the Excel YEAR() function.
func YearFrac(args []Result) Result
YearFrac is an implementation of the Excel YEARFRAC() function.
func Yield(args []Result) Result
Yield implements the Excel YIELD function.
func Yielddisc(args []Result) Result
Yielddisc implements the Excel YIELDDISC function.
func Yieldmat(args []Result) Result
Yieldmat implements the Excel YIELDMAT function.
func (r Result) AsNumber() Result
AsNumber attempts to intepret a string cell value as a number. Upon success, it returns a new number result, upon failure it returns the original result. This is used as functions return strings that can then act like number (e.g. LEFT(1.2345,3) + LEFT(1.2345,3) = 2.4)
func (r Result) AsString() Result
func (r Result) ListValues() []Result
ListValues converts an array to a list or returns a lists values. This is used for functions that can accept an array, but don't care about ordering to reuse the list function logic.
func (r Result) String() string
func (r Result) Value() string
Value returns a string version of the result.
ResultType is the type of the result
type ResultType byte
ResultType constants.
const ( ResultTypeUnknown ResultType = iota ResultTypeNumber ResultTypeString ResultTypeList ResultTypeArray ResultTypeError ResultTypeEmpty )
func (i ResultType) String() string
SheetPrefixExpr is a reference to a sheet like Sheet1! (reference to sheet 'Sheet1').
type SheetPrefixExpr struct {
// contains filtered or unexported fields
}
func (s SheetPrefixExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of a sheet expression.
func (s SheetPrefixExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a sheet.
func (s SheetPrefixExpr) String() string
String returns a string representation of SheetPrefixExpr.
func (s SheetPrefixExpr) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect SheetPrefixExpr.
String is a string expression.
type String struct {
// contains filtered or unexported fields
}
func (s String) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns a string.
func (s String) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for String.
func (s String) String() string
String returns a string representation of String.
func (s String) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect String.
VerticalRange is a range expression that when evaluated returns a list of Results from references like AA:IJ (all cells from columns AA to IJ).
type VerticalRange struct {
// contains filtered or unexported fields
}
func (r VerticalRange) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a vertical range returning a list of results or an error.
func (r VerticalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a vertical range.
func (r VerticalRange) String() string
String returns a string representation of a vertical range.
func (r VerticalRange) Update(q *update.UpdateQuery) Expression
Update updates references in the VerticalRange after removing a row/column.