226 Commits

Author SHA1 Message Date
Todd
09825ac816 schema: rework schema namespaces to work around Windows issues
The go command on Windows doesn't like long path name. To
work around this, this is the first in a series of changes to
shorten the schema disk path structure in a few places.

Fixes #89
2017-09-23 10:01:17 -04:00
Todd
5553f30ada chart: add some tests
The tests aren't much, but they do execute
some functionality that should always work.
2017-09-22 21:49:48 -04:00
Todd
de75c0030e meta: test codecov.io 2017-09-22 21:49:48 -04:00
Todd
20dce01067 test: add more tests for xsdany and optional
- XSDAny
- filename generation
- optional
2017-09-22 20:58:57 -04:00
Todd
f0de9225cf spreadsheet: return errors if passed an invalid reference 2017-09-21 21:52:15 -04:00
Todd
2c0aa0c665 spreadsheet: add validation for merged cells
Detect overlapping merged cells and report an error
during validation.
2017-09-21 21:52:15 -04:00
Todd
a6ae585a35 spreadsheet: record inf/nan as errors
As you can't directly enter NaN/Inf in Excel, there's
no great way to verify behavior.  This just ensures
that setting NaN/Inf from Go will result in a #NUM!
error in Excel.
2017-09-21 21:14:25 -04:00
Todd
00be1d037c formula: support evaluating array formulas
Array formulas are entered in Excel by pressing
Ctrl+Shift+Enter to finish the formula.  The resulting
formula is entirely in one cell, but its computed results
expand into cells the size of the array result.
2017-09-21 20:20:06 -04:00
Todd
c4c9138da2 formula: add more index functions
- HLOOKUP
- LOOKUP
- TRANSPOSE
- VLOOKUP
2017-09-21 19:31:28 -04:00
Todd
237685187d meta: add compile time check for go1.8+ 2017-09-21 18:32:24 -04:00
Todd
eab436cb20 meta: add minimum go version to readme 2017-09-21 18:04:12 -04:00
Todd
6a323fdea2 meta: update README 2017-09-20 20:47:39 -04:00
Todd
f915bf1a9b formula: support for more statistical functions
- AVERAGE
- AVERAGEA
- COUNT
- COUNTA
- COUNTBLANK
- MEDIAN
2017-09-20 20:47:03 -04:00
Todd
0e09e64818 formula: compatibility & bug fixes
- Make UNICODE with no arguments behave like Excel
- Fix OFFSET/INDEX for named ranges
2017-09-20 20:47:03 -04:00
Todd
e7da598399 spreadsheet: return empty values from sheet context
This is required as AVERAGE/AVERAGEA need to distinguish between
empty and non-empty cells.
2017-09-20 20:47:03 -04:00
Todd
b056033c12 format: add support for string formats 2017-09-20 15:15:13 -04:00
Todd
5f6ed3a319 spreadsheet: add unit tests for default number formats 2017-09-20 15:15:13 -04:00
Todd
6a8920a1c7 spreadsheet: fix number format 47
This appears to be a typo in the ECMA 376 document.  Excel treats
it as "mm:ss.0" and not "mmss.0"
2017-09-20 15:15:13 -04:00
Todd
1992e3c519 format: support variable denominators in fraction formats 2017-09-20 15:15:13 -04:00
Todd
87842baff2 demo: add an unprotect-xlsx demo that will unprotect an XLSX
This demo will remove both the workbook and individual sheet
protections.
2017-09-20 15:15:13 -04:00
Todd
a8d038561c spreadsheet: add support for protecting/unprotecting workbooks/sheets 2017-09-20 15:15:13 -04:00
Todd
981b0b205c demo: add csv2xlsx demo program 2017-09-19 21:17:33 -04:00
Todd
c4f7c3a881 meta: update README.md status 2017-09-19 20:30:22 -04:00
Todd
20e8ecd685 format: add package doc 2017-09-19 19:45:41 -04:00
Todd
1103aa1edb format: add support for fraction formatting v0.3.0 2017-09-19 16:35:11 -04:00
Todd
32bc9e3a50 format: fix vet errors with generated function 2017-09-18 22:30:08 -05:00
Todd
b30eaaae44 format: change debugging log.Fatal to log.Printf 2017-09-18 22:30:08 -05:00
Todd
b03eec358d spreadsheet: add xlsx2csv demo
This demo program will extract either raw or formatted
values from a spreadsheet, creating one CSV file per
sheet.
2017-09-18 22:30:08 -05:00
Todd
49e34b1d90 formula: better support for thousands separator 2017-09-18 22:30:08 -05:00
Todd
d69cf90249 format: implement support for evaluating spreadsheet number formatting
This adds support for extracting a cell's formatted value according to
the number format applied to the cell.  To do this we need to implement
a parser for Excel style format strings and support formatting numbers
according to that style.

This also enhances the General formatting to be much closer to what
Excel normally does. There are likely still a few corner cases where
Excel and gooxml differ, but hopefully not too many.
2017-09-18 22:30:08 -05:00
Todd
d9c4a27794 spreadsheet: start adding support for extracting formatted cell value 2017-09-18 22:30:08 -05:00
Todd
39028bcd7a spreadsheet: add ability to recalculate formulas
If the formula executes without errors, it stores the
result as a cached value in the sheet.
2017-09-17 14:56:58 -05:00
Todd
b54a2efd19 formula: add method to determine the supported functions 2017-09-17 14:56:58 -05:00
Todd
422484af83 formula: add more complex function support
- INDEX
- INDIRECT
- OFFSET
2017-09-17 14:56:58 -05:00
Todd
92c902e6bd formula: support for using named ranges/tables from formulas 2017-09-17 14:56:58 -05:00
Todd
a4a1562f7c spreadsheet: add formula reading/writing support
Minimal support for now, just enough to read table
ranges so they can be used from formulas.
2017-09-17 14:56:58 -05:00
Todd
5ed34695bd formula: add support for text functions
- CHAR
- CLEAN
- CODE
- CONCATENATE
- EXACT
- LEFT
- LEN
- LOWER
- PROPER
- REPT
- RIGHT
- T
- TRIM
- UNICHAR
- UNICODE
- UPPER
2017-09-17 09:23:37 -05:00
Todd
09419b822f formula: trig functions
- ACOT
- ACOTH
- CEILING (legacy version)
- COT
- COTH
- CSC
- CSCH
- FLOOR (legacy version)
- SEC
- SECH
2017-09-16 21:12:41 -05:00
Todd
29e03fc7b7 formula: more math/trig functions
- SIGN
- SIN
- SINH
- SQRT
- SQRTPI
- SUM
- SUMPRODUCT
- SUMSQ
- TAN
- TANH
- TRUNC
2017-09-16 18:13:20 -05:00
Todd
e46a7165b4 formula: more implementations of math/trig functins
- MDETERM
- MOD
- MROUND
- MULTINOMIAL
- MUNIT
- ODD
- POWER
- PRODUCT
- QUOTIENT
- RADIANS
- RAND
- RANDBETWEEN
- ROMAN
- ROUND
- ROUNDDOWN
- ROUNDUP
- SERIESSUM
2017-09-16 16:52:14 -05:00
Todd
23e428e770 formula: return array instead of list for ranges
This will be required for functions that need to know
the structure of the input.
2017-09-16 16:52:14 -05:00
Todd
5a5c16b89a formula: add initial support for cell arrays
This is a pretty uncommon feature from what I can tell
and is not fully supported. The example for the MDETERM
function uses an array though, so this will at least add
enough support for the examples to compute correctly.
2017-09-16 16:52:14 -05:00
Todd
fb43078e87 formula: add support for referencing other sheets
This adds support references like 'Sheet 1'! so that formulas
can pull values from other sheets.
2017-09-16 10:33:13 -05:00
Todd
e0786dae4a formula: support for more math/trig formulas
- EVEN
- EXP
- FACT
- FACTDOUBLE
- FLOOR.MATH
- FLOOR.PRECISE
- GCD
- INT
- ISO.CEILING
- LCM
- LN
- LOG
- LOG10
2017-09-16 09:46:44 -05:00
Todd
341c2ef03e meta: down too often 2017-09-15 17:48:56 -05:00
Todd
fe93d10dca meta: add performance numbers 2017-09-15 17:44:25 -05:00
Todd
199db803a0 spreadsheet: fix bug with column to index 2017-09-15 17:43:40 -05:00
Todd
9b89ae1f12 spreadsheet: add fast paths for appending rows/cells 2017-09-15 17:43:40 -05:00
Todd
382c157c11 formula: add more math formulas
- ABS
- ACOS
- ACOSH
- ARABIC
- ASIN
- ASINH
- ATAN
- ATANH
- ATAN2
- BASE
- CEILING.MATH
- CEILING.PRECISE
- COMBIN
- COMBINA
- COS
- COSH
- DECIMAL
- DEGREES
- PI
2017-09-15 17:43:40 -05:00
Todd
6778397c6b meta: update current work on readme 2017-09-14 22:17:42 -05:00