|
|
@@ -55,6 +55,191 @@ func (l *LibSuite) TestCreateSheet(c *C) {
|
|
|
c.Assert(cellstring, Equals, "Foo")
|
|
|
}
|
|
|
|
|
|
+func (l *LibSuite) TestGetNumberFormat(c *C) {
|
|
|
+ var cell *Cell
|
|
|
+ var cellXfs []xlsxXf
|
|
|
+ var numFmt xlsxNumFmt
|
|
|
+ var numFmts []xlsxNumFmt
|
|
|
+ var xStyles *xlsxStyles
|
|
|
+ var numFmtRefTable map[int]xlsxNumFmt
|
|
|
+
|
|
|
+ cellXfs = make([]xlsxXf, 1)
|
|
|
+ cellXfs[0] = xlsxXf{NumFmtId: 1}
|
|
|
+
|
|
|
+ numFmts = make([]xlsxNumFmt, 1)
|
|
|
+ numFmtRefTable = make(map[int]xlsxNumFmt)
|
|
|
+
|
|
|
+ xStyles = &xlsxStyles{NumFmts: numFmts, CellXfs: cellXfs}
|
|
|
+
|
|
|
+ cell = &Cell{Value: "123.123", numFmtRefTable: numFmtRefTable, styleIndex: 1, styles: xStyles}
|
|
|
+
|
|
|
+ numFmt = xlsxNumFmt{NumFmtId: 1, FormatCode: "dd/mm/yy"}
|
|
|
+ numFmts[0] = numFmt
|
|
|
+ numFmtRefTable[1] = numFmt
|
|
|
+ c.Assert(cell.GetNumberFormat(), Equals, "dd/mm/yy")
|
|
|
+}
|
|
|
+
|
|
|
+// We can return a string representation of the formatted data
|
|
|
+func (l *LibSuite) TestFormattedValue(c *C) {
|
|
|
+ var cell, earlyCell, negativeCell, smallCell *Cell
|
|
|
+ var cellXfs []xlsxXf
|
|
|
+ var numFmt xlsxNumFmt
|
|
|
+ var numFmts []xlsxNumFmt
|
|
|
+ var xStyles *xlsxStyles
|
|
|
+ var numFmtRefTable map[int]xlsxNumFmt
|
|
|
+
|
|
|
+ cellXfs = make([]xlsxXf, 1)
|
|
|
+ cellXfs[0] = xlsxXf{NumFmtId: 1}
|
|
|
+
|
|
|
+ numFmts = make([]xlsxNumFmt, 1)
|
|
|
+ numFmtRefTable = make(map[int]xlsxNumFmt)
|
|
|
+
|
|
|
+ xStyles = &xlsxStyles{NumFmts: numFmts, CellXfs: cellXfs}
|
|
|
+ cell = &Cell{Value: "37947.7500001", numFmtRefTable: numFmtRefTable, styleIndex: 1, styles: xStyles}
|
|
|
+ negativeCell = &Cell{Value: "-37947.7500001", numFmtRefTable: numFmtRefTable, styleIndex: 1, styles: xStyles}
|
|
|
+ smallCell = &Cell{Value: "0.007", numFmtRefTable: numFmtRefTable, styleIndex: 1, styles: xStyles}
|
|
|
+ earlyCell = &Cell{Value: "2.1", numFmtRefTable: numFmtRefTable, styleIndex: 1, styles: xStyles}
|
|
|
+ setCode := func(code string) {
|
|
|
+ numFmt = xlsxNumFmt{NumFmtId: 1, FormatCode: code}
|
|
|
+ numFmts[0] = numFmt
|
|
|
+ numFmtRefTable[1] = numFmt
|
|
|
+ }
|
|
|
+
|
|
|
+ setCode("general")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "37947.7500001")
|
|
|
+ c.Assert(negativeCell.FormattedValue(), Equals, "-37947.7500001")
|
|
|
+
|
|
|
+ setCode("0")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "37947")
|
|
|
+
|
|
|
+ setCode("#,##0") // For the time being we're not doing this
|
|
|
+ // comma formatting, so it'll fall back to
|
|
|
+ // the related non-comma form.
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "37947")
|
|
|
+
|
|
|
+ setCode("0.00")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "37947.75")
|
|
|
+
|
|
|
+ setCode("#,##0.00") // For the time being we're not doing this
|
|
|
+ // comma formatting, so it'll fall back to
|
|
|
+ // the related non-comma form.
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "37947.75")
|
|
|
+
|
|
|
+ setCode("#,##0 ;(#,##0)")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "37947")
|
|
|
+ c.Assert(negativeCell.FormattedValue(), Equals, "(37947)")
|
|
|
+
|
|
|
+ setCode("#,##0 ;[red](#,##0)")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "37947")
|
|
|
+ c.Assert(negativeCell.FormattedValue(), Equals, "(37947)")
|
|
|
+
|
|
|
+ setCode("0%")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "3794775%")
|
|
|
+
|
|
|
+ setCode("0.00%")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "3794775.00%")
|
|
|
+
|
|
|
+ setCode("0.00e+00")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "3.794775e+04")
|
|
|
+
|
|
|
+ setCode("##0.0e+0") // This is wrong, but we'll use it for now.
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "3.794775e+04")
|
|
|
+
|
|
|
+ setCode("mm-dd-yy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "11-22-03")
|
|
|
+
|
|
|
+ setCode("d-mmm-yy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "22-Nov-03")
|
|
|
+ c.Assert(earlyCell.FormattedValue(), Equals, "1-Jan-00")
|
|
|
+
|
|
|
+ setCode("d-mmm")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "22-Nov")
|
|
|
+ c.Assert(earlyCell.FormattedValue(), Equals, "1-Jan")
|
|
|
+
|
|
|
+ setCode("mmm-yy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "Nov-03")
|
|
|
+
|
|
|
+ setCode("h:mm am/pm")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "6:00 pm")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "12:14 am")
|
|
|
+
|
|
|
+ setCode("h:mm:ss am/pm")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "6:00:00 pm")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "12:14:47 am")
|
|
|
+
|
|
|
+ setCode("h:mm")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "18:00")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "00:14")
|
|
|
+
|
|
|
+ setCode("h:mm:ss")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "18:00:00")
|
|
|
+ // This is wrong, but there's no eary way aroud it in Go right now, AFAICT.
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "00:14:47")
|
|
|
+
|
|
|
+ setCode("m/d/yy h:mm")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "11/22/03 18:00")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "12/30/99 00:14") // Note, that's 1899
|
|
|
+ c.Assert(earlyCell.FormattedValue(), Equals, "1/1/00 02:24") // and 1900
|
|
|
+
|
|
|
+ setCode("mm:ss")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "00:00")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "14:47")
|
|
|
+
|
|
|
+ setCode("[h]:mm:ss")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "18:00:00")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "14:47")
|
|
|
+
|
|
|
+ setCode("mmss.0") // I'm not sure about these.
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "00.8640")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "1447.999997")
|
|
|
+
|
|
|
+ setCode("yyyy\\-mm\\-dd")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "2003\\-11\\-22")
|
|
|
+
|
|
|
+ setCode("dd/mm/yy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "22/11/03")
|
|
|
+ c.Assert(earlyCell.FormattedValue(), Equals, "01/01/00")
|
|
|
+
|
|
|
+ setCode("hh:mm:ss")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "18:00:00")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "00:14:47")
|
|
|
+
|
|
|
+ setCode("dd/mm/yy\\ hh:mm")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "22/11/03\\ 18:00")
|
|
|
+
|
|
|
+ setCode("yy-mm-dd")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "03-11-22")
|
|
|
+
|
|
|
+ setCode("d-mmm-yyyy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "22-Nov-2003")
|
|
|
+ c.Assert(earlyCell.FormattedValue(), Equals, "1-Jan-1900")
|
|
|
+
|
|
|
+ setCode("m/d/yy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "11/22/03")
|
|
|
+ c.Assert(earlyCell.FormattedValue(), Equals, "1/1/00")
|
|
|
+
|
|
|
+ setCode("m/d/yyyy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "11/22/2003")
|
|
|
+ c.Assert(earlyCell.FormattedValue(), Equals, "1/1/1900")
|
|
|
+
|
|
|
+ setCode("dd-mmm-yyyy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "22-Nov-2003")
|
|
|
+
|
|
|
+ setCode("dd/mm/yyyy")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "22/11/2003")
|
|
|
+
|
|
|
+ setCode("mm/dd/yy hh:mm am/pm")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "11/22/03 06:00 pm")
|
|
|
+
|
|
|
+ setCode("mm/dd/yyyy hh:mm:ss")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "11/22/2003 18:00:00")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "12/30/1899 00:14:47")
|
|
|
+
|
|
|
+ setCode("yyyy-mm-dd hh:mm:ss")
|
|
|
+ c.Assert(cell.FormattedValue(), Equals, "2003-11-22 18:00:00")
|
|
|
+ c.Assert(smallCell.FormattedValue(), Equals, "1899-12-30 00:14:47")
|
|
|
+}
|
|
|
+
|
|
|
// Test that GetStyle correctly converts the xlsxStyle.Fonts.
|
|
|
func (l *LibSuite) TestGetStyleWithFonts(c *C) {
|
|
|
var cell *Cell
|