Documentation ¶
Overview ¶
The unit tests for this package are unique in that we can take advantage of "cached" formula results that Excel/LibreOffice write to the sheet. These are the computed results of a formula in string form. By comparing these values to the value computed by the gooxml evaluation of the formula, adding a new test means just adding a new formula to one of the reference sheets with Excel. During the unit test, we evaluate the formula and compare it to the value that Excel computed. If they're the same, the test passes.
Index ¶
- Variables
- func LexReader(r io.Reader) chan *node
- 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 NewHorizontalRange(v string) Expression
- func NewNamedRangeRef(v string) Expression
- func NewNegate(e Expression) Expression
- func NewNumber(v string) Expression
- func NewPrefixExpr(pfx, exp Expression) Expression
- func NewPrefixHorizontalRange(pfx Expression, v string) Expression
- func NewPrefixRangeExpr(pfx, from, to Expression) Expression
- func NewPrefixVerticalRange(pfx Expression, v string) Expression
- func NewRange(from, to Expression) Expression
- func NewSheetPrefixExpr(s string) Expression
- func NewString(v string) Expression
- func NewVerticalRange(v string) Expression
- func Parse(r io.Reader) Expression
- func ParseString(s string) Expression
- type Function
- type FunctionCall
- type FunctionComplex
- type HorizontalRange
- type Lexer
- type NamedRangeRef
- type Negate
- type Number
- type PrefixExpr
- type PrefixHorizontalRange
- type PrefixRangeExpr
- type PrefixVerticalRange
- type Range
- type Reference
- type ReferenceType
- type Result
- func Accrintm(args []Result) Result
- func Amordegrc(args []Result) Result
- func Amorlinc(args []Result) Result
- func And(args []Result) Result
- func Arabic(args []Result) Result
- func Atan2(args []Result) Result
- func Average(args []Result) Result
- func Averagea(args []Result) Result
- func Base(args []Result) Result
- func Ceiling(args []Result) Result
- func CeilingMath(args []Result) Result
- func CeilingPrecise(args []Result) Result
- func Cell(ctx Context, ev Evaluator, args []Result) Result
- func Char(args []Result) Result
- func Choose(args []Result) Result
- func Clean(args []Result) Result
- func Code(args []Result) Result
- func Column(args []Result) Result
- func Columns(args []Result) Result
- func Combin(args []Result) Result
- func Combina(args []Result) Result
- func Concat(args []Result) Result
- func Count(args []Result) Result
- func CountBlank(args []Result) Result
- func CountIf(args []Result) Result
- func CountIfs(args []Result) Result
- func Counta(args []Result) Result
- func Coupdaybs(args []Result) Result
- func Coupdays(args []Result) Result
- func Coupdaysnc(args []Result) Result
- func Coupncd(args []Result) Result
- func Coupnum(args []Result) Result
- func Couppcd(args []Result) Result
- func Cumipmt(args []Result) Result
- func Cumprinc(args []Result) Result
- func Date(args []Result) Result
- func DateDif(args []Result) Result
- func DateValue(args []Result) Result
- func Day(args []Result) Result
- func Days(args []Result) Result
- func Db(args []Result) Result
- func Ddb(args []Result) Result
- func Decimal(args []Result) Result
- func Degrees(args []Result) Result
- func Disc(args []Result) Result
- func Dollarde(args []Result) Result
- func Dollarfr(args []Result) Result
- func Duration(args []Result) Result
- func Edate(args []Result) Result
- func Effect(args []Result) Result
- func Eomonth(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 Find(args []Result) Result
- func Findb(ctx Context, ev Evaluator, args []Result) Result
- func Floor(args []Result) Result
- func FloorMath(args []Result) Result
- func FloorPrecise(args []Result) Result
- func Fv(args []Result) Result
- func Fvschedule(args []Result) Result
- func GCD(args []Result) Result
- func HLookup(args []Result) Result
- func If(args []Result) Result
- func IfError(args []Result) Result
- func IfNA(args []Result) Result
- func Ifs(args []Result) Result
- func Index(args []Result) Result
- func Indirect(ctx Context, ev Evaluator, args []Result) Result
- func Int(args []Result) Result
- func Intrate(args []Result) Result
- func Ipmt(args []Result) Result
- func Irr(args []Result) Result
- func IsBlank(args []Result) Result
- func IsErr(args []Result) Result
- func IsError(args []Result) Result
- func IsEven(args []Result) Result
- func IsFormula(ctx Context, ev Evaluator, args []Result) Result
- func IsLeapYear(ctx Context, ev Evaluator, args []Result) Result
- func IsLogical(ctx Context, ev Evaluator, args []Result) Result
- func IsNA(args []Result) Result
- func IsNonText(args []Result) Result
- func IsNumber(args []Result) Result
- func IsOdd(args []Result) Result
- func IsRef(ctx Context, ev Evaluator, args []Result) Result
- func IsText(args []Result) Result
- func Ispmt(args []Result) Result
- func LCM(args []Result) Result
- func Large(args []Result) Result
- func Left(args []Result) Result
- func Len(args []Result) Result
- func Log(args []Result) Result
- func Lookup(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 Match(args []Result) Result
- func Max(args []Result) Result
- func MaxA(args []Result) Result
- func MaxIfs(args []Result) Result
- func Mduration(args []Result) Result
- func Median(args []Result) Result
- func Mid(args []Result) Result
- func Min(args []Result) Result
- func MinA(args []Result) Result
- func MinIfs(args []Result) Result
- func Minute(args []Result) Result
- func Mirr(args []Result) Result
- func Mod(args []Result) Result
- func Month(args []Result) Result
- func Mround(args []Result) Result
- func Multinomial(args []Result) Result
- func Munit(args []Result) Result
- func NA(args []Result) Result
- func Nominal(args []Result) Result
- func Not(args []Result) Result
- func Now(args []Result) Result
- func Nper(args []Result) Result
- func Npv(args []Result) Result
- func Odd(args []Result) Result
- func Oddlprice(args []Result) Result
- func Oddlyield(args []Result) Result
- func Offset(ctx Context, ev Evaluator, args []Result) Result
- func Or(args []Result) Result
- func Pduration(args []Result) Result
- func Pi(args []Result) Result
- func Pmt(args []Result) Result
- func Power(args []Result) Result
- func Ppmt(args []Result) Result
- func Price(args []Result) Result
- func Pricedisc(args []Result) Result
- func Pricemat(args []Result) Result
- func Product(args []Result) Result
- func Proper(args []Result) Result
- func Pv(args []Result) Result
- func Quotient(args []Result) Result
- func Radians(args []Result) Result
- func Rand(args []Result) Result
- func RandBetween(args []Result) Result
- func Rate(args []Result) Result
- func Received(args []Result) Result
- func Replace(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 Row(args []Result) Result
- func Rows(args []Result) Result
- func Rri(args []Result) Result
- func Search(args []Result) Result
- func Searchb(ctx Context, ev Evaluator, args []Result) Result
- func SeriesSum(args []Result) Result
- func Sign(args []Result) Result
- func Sln(args []Result) Result
- func Small(args []Result) Result
- func Substitute(args []Result) Result
- func Sum(args []Result) Result
- func SumIf(args []Result) Result
- func SumIfs(args []Result) Result
- func SumProduct(args []Result) Result
- func SumSquares(args []Result) Result
- func Syd(args []Result) Result
- func T(args []Result) Result
- func Tbilleq(args []Result) Result
- func Tbillprice(args []Result) Result
- func Tbillyield(args []Result) Result
- func Text(args []Result) Result
- func TextJoin(args []Result) Result
- func Time(args []Result) Result
- func TimeValue(args []Result) Result
- func Today(args []Result) Result
- func Transpose(args []Result) Result
- func Trim(args []Result) Result
- func True(args []Result) Result
- func Trunc(args []Result) Result
- func Unicode(args []Result) Result
- func Upper(args []Result) Result
- func VLookup(args []Result) Result
- func Value(args []Result) Result
- func Vdb(args []Result) Result
- func Xirr(args []Result) Result
- func Xnpv(args []Result) Result
- func Xor(args []Result) Result
- func Year(ctx Context, ev Evaluator, args []Result) Result
- func YearFrac(args []Result) Result
- func Yield(args []Result) Result
- func Yielddisc(args []Result) Result
- func Yieldmat(args []Result) Result
- type ResultType
- type SheetPrefixExpr
- type String
- type VerticalRange
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 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.
func (BinaryExpr) Eval ¶
func (b BinaryExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates the binary expression using the context given.
func (BinaryExpr) Reference ¶
func (b BinaryExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for BinaryExpr.
func (BinaryExpr) String ¶
func (b BinaryExpr) String() string
Eval evaluates the binary expression using the context given.
func (BinaryExpr) Update ¶
func (b BinaryExpr) Update(q *update.UpdateQuery) Expression
Update updates references in the BinaryExpr after removing a row/column.
type Bool ¶
type Bool struct {
// contains filtered or unexported fields
}
Bool is a boolean expression.
func (Bool) Update ¶
func (b Bool) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect Bool.
type CellRef ¶
type CellRef struct {
// contains filtered or unexported fields
}
CellRef is a reference to a single cell
func (CellRef) Update ¶
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.
type ConstArrayExpr ¶
type ConstArrayExpr struct {
// contains filtered or unexported fields
}
ConstArrayExpr is a constant array expression.
func (ConstArrayExpr) Eval ¶
func (c ConstArrayExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of a constant array expression.
func (ConstArrayExpr) Reference ¶
func (c ConstArrayExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for ConstArrayExpr.
func (ConstArrayExpr) String ¶
func (c ConstArrayExpr) String() string
String returns a string representation of ConstArrayExpr.
func (ConstArrayExpr) Update ¶
func (c ConstArrayExpr) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect ConstArrayExpr.
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 // 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) }
Context is a formula execution context. Formula evaluation uses the context to retreive information from sheets.
type EmptyExpr ¶
type EmptyExpr struct { }
EmptyExpr is an empty expression.
func (EmptyExpr) Update ¶
func (e EmptyExpr) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect EmptyExpr.
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error is an error expression.
func (Error) Update ¶
func (e Error) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect Error.
type Evaluator ¶
type Evaluator interface { Eval(ctx Context, formula string) Result SetCache(key string, value Result) GetFromCache(key string) (Result, bool) LastEvalIsRef() bool }
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.
func NewEvaluator ¶
func NewEvaluator() Evaluator
NewEvaluator constructs a new defEval object which is the default formula evaluator.
type Expression ¶
type Expression interface { Eval(ctx Context, ev Evaluator) Result Reference(ctx Context, ev Evaluator) Reference String() string Update(updateQuery *update.UpdateQuery) Expression }
func NewBinaryExpr ¶
func NewBinaryExpr(lhs Expression, op BinOpType, rhs Expression) Expression
NewBinaryExpr constructs a new binary expression with a given operator.
func NewConstArrayExpr ¶
func NewConstArrayExpr(data [][]Expression) Expression
NewConstArrayExpr constructs a new constant array expression with a given data.
func NewError ¶
func NewError(v string) Expression
NewError constructs a new error expression from a string.
func NewFunction ¶
func NewFunction(name string, args []Expression) Expression
NewFunction constructs a new function call expression.
func NewHorizontalRange ¶
func NewHorizontalRange(v string) Expression
NewHorizontalRange constructs a new full rows range.
func NewNamedRangeRef ¶
func NewNamedRangeRef(v string) Expression
NewNamedRangeRef constructs a new named range reference.
func NewNegate ¶
func NewNegate(e Expression) Expression
NewNegate constructs a new negate expression.
func NewPrefixExpr ¶
func NewPrefixExpr(pfx, exp Expression) Expression
NewPrefixExpr constructs an expression with prefix.
func NewPrefixHorizontalRange ¶
func NewPrefixHorizontalRange(pfx Expression, v string) Expression
NewPrefixHorizontalRange constructs a new full rows range with prefix.
func NewPrefixRangeExpr ¶
func NewPrefixRangeExpr(pfx, from, to Expression) Expression
NewPrefixRangeExpr constructs a new range with prefix.
func NewPrefixVerticalRange ¶
func NewPrefixVerticalRange(pfx Expression, v string) Expression
NewPrefixVerticalRange constructs a new full columns range with prefix.
func NewSheetPrefixExpr ¶
func NewSheetPrefixExpr(s string) Expression
NewSheetPrefixExpr constructs a new prefix expression.
func NewVerticalRange ¶
func NewVerticalRange(v string) Expression
NewVerticalRange constructs a new full columns range.
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
}
FunctionCall is a function call expression.
func (FunctionCall) Eval ¶
func (f FunctionCall) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of a function call.
func (FunctionCall) Reference ¶
func (f FunctionCall) Reference(ctx Context, ev Evaluator) Reference
Reference returns an invalid reference for FunctionCall.
func (FunctionCall) String ¶
func (f FunctionCall) String() string
String returns a string representation of FunctionCall expression.
func (FunctionCall) Update ¶
func (f FunctionCall) Update(q *update.UpdateQuery) Expression
Update updates the FunctionCall references after removing a row/column.
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 HorizontalRange ¶
type HorizontalRange struct {
// contains filtered or unexported fields
}
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).
func (HorizontalRange) Eval ¶
func (r HorizontalRange) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a horizontal range returning a list of results or an error.
func (HorizontalRange) Reference ¶
func (r HorizontalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a horizontal range.
func (HorizontalRange) String ¶
func (r HorizontalRange) String() string
String returns a string representation of a horizontal range.
func (HorizontalRange) Update ¶
func (r HorizontalRange) Update(q *update.UpdateQuery) Expression
Update updates the horizontal range references after removing a row/column.
type NamedRangeRef ¶
type NamedRangeRef struct {
// contains filtered or unexported fields
}
NamedRangeRef is a reference to a named range.
func (NamedRangeRef) Eval ¶
func (n NamedRangeRef) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of the NamedRangeRef reference.
func (NamedRangeRef) Reference ¶
func (n NamedRangeRef) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a named range.
func (NamedRangeRef) String ¶
func (n NamedRangeRef) String() string
String returns a string representation of a named range.
func (NamedRangeRef) Update ¶
func (n NamedRangeRef) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect named ranges.
type Negate ¶
type Negate struct {
// contains filtered or unexported fields
}
Negate is a negate expression like -A1.
func (Negate) Update ¶
func (n Negate) Update(q *update.UpdateQuery) Expression
Update updates references in the Negate after removing a row/column.
type Number ¶
type Number struct {
// contains filtered or unexported fields
}
Number is a nubmer expression.
func (Number) Update ¶
func (n Number) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect Number.
type PrefixExpr ¶
type PrefixExpr struct {
// contains filtered or unexported fields
}
PrefixExpr is an expression containing reference to another sheet like Sheet1!A1 (the value of the cell A1 from sheet 'Sheet1').
func (PrefixExpr) Eval ¶
func (p PrefixExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns an expression with prefix.
func (PrefixExpr) Reference ¶
func (p PrefixExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to an expression with prefix.
func (PrefixExpr) String ¶
func (p PrefixExpr) String() string
String returns a string representation of PrefixExpr.
func (PrefixExpr) Update ¶
func (p PrefixExpr) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixExpr after removing a row/column.
type PrefixHorizontalRange ¶
type PrefixHorizontalRange struct {
// contains filtered or unexported fields
}
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').
func (PrefixHorizontalRange) Eval ¶
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 (PrefixHorizontalRange) Reference ¶
func (r PrefixHorizontalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a horizontal range with prefix.
func (PrefixHorizontalRange) String ¶
func (r PrefixHorizontalRange) String() string
String returns a string representation of a horizontal range with prefix.
func (PrefixHorizontalRange) Update ¶
func (r PrefixHorizontalRange) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixHorizontalRange after removing a row/column.
type PrefixRangeExpr ¶
type PrefixRangeExpr struct {
// contains filtered or unexported fields
}
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').
func (PrefixRangeExpr) Eval ¶
func (p PrefixRangeExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a range with prefix returning a list of results or an error.
func (PrefixRangeExpr) Reference ¶
func (p PrefixRangeExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a range with prefix.
func (PrefixRangeExpr) String ¶
func (r PrefixRangeExpr) String() string
String returns a string representation of a range with prefix.
func (PrefixRangeExpr) Update ¶
func (r PrefixRangeExpr) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixRangeExpr after removing a row/column.
type PrefixVerticalRange ¶
type PrefixVerticalRange struct {
// contains filtered or unexported fields
}
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').
func (PrefixVerticalRange) Eval ¶
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 (PrefixVerticalRange) Reference ¶
func (r PrefixVerticalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a vertical range with prefix.
func (PrefixVerticalRange) String ¶
func (r PrefixVerticalRange) String() string
String returns a string representation of a vertical range with prefix.
func (PrefixVerticalRange) Update ¶
func (r PrefixVerticalRange) Update(q *update.UpdateQuery) Expression
Update updates references in the PrefixVerticalRange after removing a row/column.
type Range ¶
type Range struct {
// contains filtered or unexported fields
}
Range is a range expression that when evaluated returns a list of Results.
func (Range) Update ¶
func (r Range) Update(q *update.UpdateQuery) Expression
Update updates references in the Range after removing a row/column.
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 ReferenceTypeHorizontalRange ReferenceTypeVerticalRange ReferenceTypeNamedRange ReferenceTypeRange ReferenceTypeSheet )
func (ReferenceType) String ¶
func (i ReferenceType) String() string
type Result ¶
type Result struct { ValueNumber float64 ValueString string ValueList []Result ValueArray [][]Result IsBoolean bool 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 Average ¶
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. gooxml will return 0.5 in this case.
func Averagea ¶
Averagea implements the AVERAGEA function, AVERAGEA counts cells that contain text as a zero where AVERAGE ignores them entirely.
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 Cell ¶
Cell is an implementation of the Excel CELL function that returns information about the formatting, location, or contents of a cell.
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 Concat ¶
Concat is an implementation of the Excel CONCAT() and deprecated CONCATENATE() function.
func CountBlank ¶
CountBlank implements the COUNTBLANK function.
func Coupdaysnc ¶
Coupdaysnc implements the Excel COUPDAYSNC 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 Fvschedule ¶
Fvschedule implements the Excel FVSCHEDULE function.
func GCD ¶
GCD implements the Excel GCD() function which returns the greatest common divisor of a range of numbers.
func HLookup ¶
HLookup implements the HLOOKUP function that returns a matching value from a row in an array.
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 IsLeapYear ¶
IsLeapYear is an implementation of the Excel ISLEAPYEAR() function.
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 Lookup ¶
Lookup implements the LOOKUP function that returns a matching value from a column, or from the same index in a second column.
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 Mid ¶
Mid is an implementation of the Excel MID function that returns a copy of the string with each word capitalized.
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 Substitute ¶
Substitute is an implementation of the Excel SUBSTITUTE function.
func SumProduct ¶
SumProduct is an implementation of the Excel SUMPRODUCT() function.
func SumSquares ¶
SumSquares is an implementation of the Excel SUMSQ() function.
func Tbillprice ¶
Tbillprice implements the Excel TBILLPRICE function.
func Tbillyield ¶
Tbillyield implements the Excel TBILLYIELD 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 VLookup ¶
VLookup implements the VLOOKUP function that returns a matching value from a column in an array.
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
}
SheetPrefixExpr is a reference to a sheet like Sheet1! (reference to sheet 'Sheet1').
func (SheetPrefixExpr) Eval ¶
func (s SheetPrefixExpr) Eval(ctx Context, ev Evaluator) Result
Eval evaluates and returns the result of a sheet expression.
func (SheetPrefixExpr) Reference ¶
func (s SheetPrefixExpr) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a sheet.
func (SheetPrefixExpr) String ¶
func (s SheetPrefixExpr) String() string
String returns a string representation of SheetPrefixExpr.
func (SheetPrefixExpr) Update ¶
func (s SheetPrefixExpr) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect SheetPrefixExpr.
type String ¶
type String struct {
// contains filtered or unexported fields
}
String is a string expression.
func (String) Update ¶
func (s String) Update(q *update.UpdateQuery) Expression
Update returns the same object as updating sheet references does not affect String.
type VerticalRange ¶
type VerticalRange struct {
// contains filtered or unexported fields
}
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).
func (VerticalRange) Eval ¶
func (r VerticalRange) Eval(ctx Context, ev Evaluator) Result
Eval evaluates a vertical range returning a list of results or an error.
func (VerticalRange) Reference ¶
func (r VerticalRange) Reference(ctx Context, ev Evaluator) Reference
Reference returns a string reference value to a vertical range.
func (VerticalRange) String ¶
func (r VerticalRange) String() string
String returns a string representation of a vertical range.
func (VerticalRange) Update ¶
func (r VerticalRange) Update(q *update.UpdateQuery) Expression
Update updates references in the VerticalRange after removing a row/column.
Source Files ¶
- binaryexpr.go
- binoptype_string.go
- bool.go
- cellref.go
- columnref.go
- constarrayexpr.go
- context.go
- def_eval.go
- doc.go
- emptyexpr.go
- error.go
- evaluator.go
- evcache.go
- expression.go
- fndatetime.go
- fnfinance.go
- fnindex.go
- fninformation.go
- fnlogical.go
- fnmathtrig.go
- fnstatistical.go
- fntext.go
- functioncall.go
- grammar.go
- horizontalrange.go
- invalidreferencecontext.go
- lex.go
- lexer.go
- namedrangeref.go
- negate.go
- nocache.go
- number.go
- parser.go
- prefixexpr.go
- prefixhorizontalrange.go
- prefixrangeexpr.go
- prefixverticalrange.go
- range.go
- reference.go
- referencetype_string.go
- register.go
- result.go
- resulttype_string.go
- sheetprefixexpr.go
- string.go
- verticalrange.go