Documentation ¶
Index ¶
- Variables
- func ColumnToIndex(col string) uint32
- func IndexToColumn(col uint32) string
- func LexReader(r io.Reader) chan *node
- func ParseCellReference(s string) (col string, row uint32, err error)
- func RegisterFunction(name string, fn Function)
- func RegisterFunctionComplex(name string, fn FunctionComplex)
- func SupportedFunctions() []string
- type BinOpType
- type BinaryExpr
- type Bool
- type CellRef
- type ConstArrayExpr
- type Context
- type EmptyExpr
- type Error
- type ErrorType
- type Evaluator
- type Expression
- func NewBinaryExpr(lhs Expression, op BinOpType, rhs Expression) Expression
- func NewBool(v string) Expression
- func NewCellRef(v string) Expression
- func NewConstArrayExpr(data [][]Expression) Expression
- func NewEmptyExpr() Expression
- func NewError(v string) Expression
- func NewFunction(name string, args []Expression) Expression
- func NewNamedRangeRef(v string) Expression
- func NewNegate(e Expression) Expression
- func NewNumber(v string) Expression
- func NewPrefixExpr(pfx, exp Expression) Expression
- func NewRange(from, to Expression) Expression
- func NewSheetPrefixExpr(s string) Expression
- func NewString(v string) Expression
- func Parse(r io.Reader) Expression
- func ParseString(s string) Expression
- type Function
- type FunctionCall
- type FunctionComplex
- type Lexer
- type NamedRangeRef
- type Negate
- type Number
- type PrefixExpr
- type Range
- type Reference
- type ReferenceType
- type Result
- func And(args []Result) Result
- func Arabic(args []Result) Result
- func Atan2(args []Result) Result
- func Base(args []Result) Result
- func Ceiling(args []Result) Result
- func CeilingMath(args []Result) Result
- func CeilingPrecise(args []Result) Result
- func Char(args []Result) Result
- func Clean(args []Result) Result
- func Code(args []Result) Result
- func Combin(args []Result) Result
- func Combina(args []Result) Result
- func Concatenate(args []Result) Result
- func Decimal(args []Result) Result
- func Degrees(args []Result) Result
- func Even(args []Result) Result
- func Exact(args []Result) Result
- func Fact(args []Result) Result
- func FactDouble(args []Result) Result
- func False(args []Result) Result
- func Floor(args []Result) Result
- func FloorMath(args []Result) Result
- func FloorPrecise(args []Result) Result
- func GCD(args []Result) Result
- func If(args []Result) Result
- func IfError(args []Result) Result
- func IfNA(args []Result) Result
- func Index(args []Result) Result
- func Indirect(ctx Context, ev Evaluator, args []Result) Result
- func Int(args []Result) Result
- func LCM(args []Result) Result
- func Left(args []Result) Result
- func Len(args []Result) Result
- func Log(args []Result) Result
- func Lower(args []Result) Result
- func MDeterm(args []Result) Result
- func MakeArrayResult(arr [][]Result) Result
- func MakeBoolResult(b bool) Result
- func MakeEmptyResult() Result
- func MakeErrorResult(msg string) Result
- func MakeErrorResultType(t ErrorType, msg string) Result
- func MakeListResult(list []Result) Result
- func MakeNumberResult(v float64) Result
- func MakeStringResult(s string) Result
- func Max(args []Result) Result
- func Min(args []Result) Result
- func Mod(args []Result) Result
- func Mround(args []Result) Result
- func Multinomial(args []Result) Result
- func Munit(args []Result) Result
- func NA(args []Result) Result
- func Not(args []Result) Result
- func Odd(args []Result) Result
- func Offset(ctx Context, ev Evaluator, args []Result) Result
- func Or(args []Result) Result
- func Pi(args []Result) Result
- func Power(args []Result) Result
- func Product(args []Result) Result
- func Proper(args []Result) Result
- func Quotient(args []Result) Result
- func Radians(args []Result) Result
- func Rand(args []Result) Result
- func RandBetween(args []Result) Result
- func Rept(args []Result) Result
- func Right(args []Result) Result
- func Roman(args []Result) Result
- func Round(args []Result) Result
- func RoundDown(args []Result) Result
- func RoundUp(args []Result) Result
- func SeriesSum(args []Result) Result
- func Sign(args []Result) Result
- func Sum(args []Result) Result
- func SumProduct(args []Result) Result
- func SumSquares(args []Result) Result
- func T(args []Result) Result
- func Trim(args []Result) Result
- func True(args []Result) Result
- func Trunc(args []Result) Result
- func Upper(args []Result) Result
- func Xor(args []Result) Result
- type ResultType
- type SheetPrefixExpr
- type String
Constants ¶
This section is empty.
Variables ¶
var InvalidReferenceContext = &ivr{}
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 ReferenceInvalid = Reference{Type: ReferenceTypeInvalid}
Functions ¶
func ColumnToIndex ¶
ColumnToIndex maps a column to a zero based index (e.g. A = 0, B = 1, AA = 26)
func IndexToColumn ¶
IndexToColumn maps a column number to a coumn name (e.g. 0 = A, 1 = B, 26 = AA)
func ParseCellReference ¶
TODO: move these somewhere to remove duplication
func RegisterFunction ¶
RegisterFunction registers a standard function.
func RegisterFunctionComplex ¶
func RegisterFunctionComplex(name string, fn FunctionComplex)
RegisterFunctionComplex registers a standard function.
func SupportedFunctions ¶
func SupportedFunctions() []string
SupportedFunctions returns a list of supported functions.
Types ¶
type BinOpType ¶
type BinOpType byte
BinOpType is the binary operation operator type
type BinaryExpr ¶
type BinaryExpr struct {
// contains filtered or unexported fields
}
BinaryExpr is a binary expression.
type CellRef ¶
type CellRef struct {
// contains filtered or unexported fields
}
CellRef is a reference to a single cell
type ConstArrayExpr ¶
type ConstArrayExpr struct {
// contains filtered or unexported fields
}
type Context ¶
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 // NamedRange returns a named range. NamedRange(name string) Reference }
Context is a formula execution context. Formula evaluation uses the context to retreive information from sheets.
type Evaluator ¶
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.
func NewEvaluator ¶
func NewEvaluator() Evaluator
type Expression ¶
type Expression interface { Eval(ctx Context, ev Evaluator) Result Reference(ctx Context, ev Evaluator) Reference }
func NewBinaryExpr ¶
func NewBinaryExpr(lhs Expression, op BinOpType, rhs Expression) Expression
NewBinaryExpr constructs a new binary expression with a given operator.
func NewBool ¶
func NewBool(v string) Expression
func NewConstArrayExpr ¶
func NewConstArrayExpr(data [][]Expression) Expression
func NewEmptyExpr ¶
func NewEmptyExpr() Expression
func NewError ¶
func NewError(v string) Expression
func NewFunction ¶
func NewFunction(name string, args []Expression) Expression
func NewNamedRangeRef ¶
func NewNamedRangeRef(v string) Expression
NewNamedRangeRef constructs a new named range reference.
func NewNegate ¶
func NewNegate(e Expression) Expression
func NewNumber ¶
func NewNumber(v string) Expression
func NewPrefixExpr ¶
func NewPrefixExpr(pfx, exp Expression) Expression
func NewSheetPrefixExpr ¶
func NewSheetPrefixExpr(s string) Expression
func NewString ¶
func NewString(v string) Expression
func Parse ¶
func Parse(r io.Reader) Expression
func ParseString ¶
func ParseString(s string) Expression
type Function ¶
Function is a standard function whose result only depends on its arguments.
func LookupFunction ¶
LookupFunction looks up and returns a standard function or nil.
type FunctionCall ¶
type FunctionCall struct {
// contains filtered or unexported fields
}
type FunctionComplex ¶
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.
func LookupFunctionComplex ¶
func LookupFunctionComplex(name string) FunctionComplex
LookupFunctionComplex looks up and returns a complex function or nil.
type NamedRangeRef ¶
type NamedRangeRef struct {
// contains filtered or unexported fields
}
NamedRangeRef is a reference to a named range
type PrefixExpr ¶
type PrefixExpr struct {
// contains filtered or unexported fields
}
type Range ¶
type Range struct {
// contains filtered or unexported fields
}
Range is a range expression that when evaluated returns a list of Results.
type Reference ¶
type Reference struct { Type ReferenceType Value string }
func MakeRangeReference ¶
type ReferenceType ¶
type ReferenceType byte
ReferenceType is a type of reference
const ( ReferenceTypeInvalid ReferenceType = iota ReferenceTypeCell ReferenceTypeNamedRange ReferenceTypeRange ReferenceTypeSheet )
func (ReferenceType) String ¶
func (i ReferenceType) String() string
type Result ¶
type Result struct { ValueNumber float64 ValueString string ValueList []Result ValueArray [][]Result ErrorMessage string Type ResultType Ref Reference }
Result is the result of a formula or cell evaluation .
func Arabic ¶
Arabic implements the Excel ARABIC function which parses roman numerals. It accepts one numeric argument.
func Atan2 ¶
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 Base ¶
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 ¶
Ceiling is an implementation of the CEILING function which returns the ceiling of a number.
func CeilingMath ¶
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 ¶
CeilingPrecise is an implementation of the CEILING.PRECISE function which returns the ceiling of a number.
func Char ¶
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 Clean ¶
Clean is an implementation of the Excel CLEAN function that removes unprintable characters.
func Code ¶
Code is an implementation of the Excel CODE function that returns the first character of the string as a number.
func Combin ¶
Combin is an implementation of the Excel COMBINA function whic returns the number of combinations.
func Combina ¶
Combina is an implementation of the Excel COMBINA function whic returns the number of combinations with repetitions.
func Concatenate ¶
Concatenate is an implementation of the Excel CONCATENATE() function.
func Decimal ¶
Decimal is an implementation of the Excel function DECIMAL() that parses a string in a given base and returns the numeric result.
func Degrees ¶
Degrees is an implementation of the Excel function DEGREES() that converts radians to degrees.
func Even ¶
Even is an implementation of the Excel EVEN() that rounds a number to the nearest even integer.
func Fact ¶
Fact is an implementation of the excel FACT function which returns the factorial of a positive numeric input.
func FactDouble ¶
FactDouble is an implementation of the excel FACTDOUBLE function which returns the double factorial of a positive numeric input.
func FloorMath ¶
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 ¶
FloorPrecise is an implementation of the FlOOR.PRECISE function.
func GCD ¶
GCD implements the Excel GCD() function which returns the greatest common divisor of a range of numbers.
func IfError ¶
IfError is an implementation of the Excel IFERROR() function. It takes two arguments.
func Indirect ¶
Indirect is an implementation of the Excel INDIRECT function that returns the contents of a cell.
func Int ¶
Int is an implementation of the Excel INT() function that rounds a number down to an integer.
func LCM ¶
LCM implements the Excel LCM() function which returns the least common multiple of a range of numbers.
func Left ¶
Left implements the Excel LEFT(string,[n]) function which returns the leftmost n characters.
func Log ¶
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 Lower ¶
Lower is an implementation of the Excel LOWER function that returns a lower case version of a string.
func MDeterm ¶
MDeterm is an implementation of the Excel MDETERM which finds the determinant of a matrix.
func MakeArrayResult ¶
MakeArrayResult constructs an array result (matrix).
func MakeBoolResult ¶
MakeBoolResult constructs a boolean result (internally a number).
func MakeEmptyResult ¶
func MakeEmptyResult() Result
MakeEmptyResult is ued when parsing an empty argument.
func MakeErrorResult ¶
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 ¶
MakeErrorResultType makes an error result of a given type with a specified debug message
func MakeListResult ¶
MakeListResult constructs a list result.
func MakeNumberResult ¶
MakeNumberResult constructs a number result.
func MakeStringResult ¶
MakeStringResult constructs a string result.
func Mod ¶
Mod is an implementation of the Excel MOD function which returns the remainder after division. It requires two numeric argumnts.
func Mround ¶
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 ¶
Multinomial implements the excel MULTINOMIAL function.
func Munit ¶
Munit is an implementation of the Excel MUNIT function that returns an identity matrix.
func Odd ¶
Odd is an implementation of the Excel ODD() that rounds a number to the nearest odd integer.
func Or ¶
Or is an implementation of the Excel OR() function and takes a variable number of arguments.
func Power ¶
Power is an implementation of the Excel POWER function that raises a number to a power. It requires two numeric arguments.
func Proper ¶
Proper is an implementation of the Excel PROPER function that returns a copy of the string with each word capitalized.
func Quotient ¶
Quotient is an implementation of the Excel QUOTIENT function that returns the integer portion of division.
func Radians ¶
Radians is an implementation of the Excel function RADIANS() that converts degrees to radians.
func Rand ¶
Rand is an implementation of the Excel RAND() function that returns random numbers in the range [0,1).
func RandBetween ¶
RandBetween is an implementation of the Excel RANDBETWEEN() function that returns a random integer in the range specified.
func Right ¶
Right implements the Excel RIGHT(string,[n]) function which returns the rightmost n characters.
func Roman ¶
Roman is an implementation of the Excel ROMAN function that convers numbers to roman numerals in one of 5 formats.
func Round ¶
Round is an implementation of the Excel ROUND function that rounds a number to a specified number of digits.
func RoundDown ¶
RoundDown is an implementation of the Excel ROUNDDOWN function that rounds a number down to a specified number of digits.
func RoundUp ¶
RoundUp is an implementation of the Excel ROUNDUP function that rounds a number up to a specified number of digits.
func SumProduct ¶
SumProduct is an implementation of the Excel SUMPRODUCT() function.
func SumSquares ¶
SumSquares is an implementation of the Excel SUMSQ() function.
func Trim ¶
Trim is an implementation of the Excel TRIM function that removes leading, trailing and consecutive spaces.
func Upper ¶
Upper is an implementation of the Excel UPPER function that returns a upper case version of a string.
func Xor ¶
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 (Result) AsNumber ¶
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 (Result) ListValues ¶
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.
type ResultType ¶
type ResultType byte
ResultType is the type of the result
const ( ResultTypeUnknown ResultType = iota ResultTypeNumber ResultTypeString ResultTypeList ResultTypeArray ResultTypeError ResultTypeEmpty )
ResultType constants.
func (ResultType) String ¶
func (i ResultType) String() string
type SheetPrefixExpr ¶
type SheetPrefixExpr struct {
// contains filtered or unexported fields
}
Source Files ¶
- binaryexpr.go
- binoptype_string.go
- bool.go
- cellref.go
- constarrayexpr.go
- context.go
- emptyexpr.go
- error.go
- evaluator.go
- expression.go
- fnindex.go
- fninformation.go
- fnlogical.go
- fnmathtrig.go
- fnsimple.go
- fntext.go
- functioncall.go
- grammar.go
- invalidreferencecontext.go
- lex.go
- lexer.go
- namedrangeref.go
- negate.go
- number.go
- parser.go
- prefixexpr.go
- range.go
- reference.go
- referencetype_string.go
- register.go
- result.go
- resulttype_string.go
- sheetprefixexpr.go
- string.go