- Support set custom number format, relate issue #86;

- go test and godoc updated
This commit is contained in:
Ri Xu 2017-07-27 11:46:04 +08:00
parent 8493fea373
commit 4a74951e81
No known key found for this signature in database
GPG Key ID: BA5E5BB1C948EDF7
3 changed files with 301 additions and 254 deletions

View File

@ -420,8 +420,8 @@ func TestSetCellStyleCurrencyNumberFormat(t *testing.T) {
if err != nil {
t.Log(err)
}
xlsx.SetCellValue("Sheet1", "A1", 37947.7500001)
xlsx.SetCellValue("Sheet1", "A2", 37947.7500001)
xlsx.SetCellValue("Sheet1", "A1", 42920.5)
xlsx.SetCellValue("Sheet1", "A2", 42920.5)
style, err = xlsx.NewStyle(`{"number_format": 26, "lang": "zh-tw"}`)
if err != nil {
@ -450,6 +450,26 @@ func TestSetCellStyleCurrencyNumberFormat(t *testing.T) {
}
}
func TestSetCellStyleCustomNumberFormat(t *testing.T) {
xlsx := NewFile()
xlsx.SetCellValue("Sheet1", "A1", 42920.5)
xlsx.SetCellValue("Sheet1", "A2", 42920.5)
style, err := xlsx.NewStyle(`{"custom_number_format": "[$-380A]dddd\\,\\ dd\" de \"mmmm\" de \"yyyy;@"}`)
if err != nil {
t.Log(err)
}
xlsx.SetCellStyle("Sheet1", "A1", "A1", style)
style, err = xlsx.NewStyle(`{"custom_number_format": "[$-380A]dddd\\,\\ dd\" de \"mmmm\" de \"yyyy;@"}`)
if err != nil {
t.Log(err)
}
xlsx.SetCellStyle("Sheet1", "A2", "A2", style)
err = xlsx.SaveAs("./test/Workbook_custom_number_format.xlsx")
if err != nil {
t.Log(err)
}
}
func TestSetCellStyleFill(t *testing.T) {
xlsx, err := OpenFile("./test/Workbook_2.xlsx")
if err != nil {

520
styles.go
View File

@ -1071,6 +1071,251 @@ func parseFormatStyleSet(style string) (*formatCellStyle, error) {
// 48 | ##0.0E+0
// 49 | @
//
// Number format code in zh-tw language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-404]e/m/d
// 28 | [$-404]e"年"m"月"d"日"
// 29 | [$-404]e"年"m"月"d"日"
// 30 | m/d/yy
// 31 | yyyy"年"m"月"d"日"
// 32 | hh"時"mm"分"
// 33 | hh"時"mm"分"ss"秒"
// 34 | 上午/下午 hh"時"mm"分"
// 35 | 上午/下午 hh"時"mm"分"ss"秒"
// 36 | [$-404]e/m/d
// 50 | [$-404]e/m/d
// 51 | [$-404]e"年"m"月"d"日"
// 52 | 上午/下午 hh"時"mm"分"
// 53 | 上午/下午 hh"時"mm"分"ss"秒"
// 54 | [$-404]e"年"m"月"d"日"
// 55 | 上午/下午 hh"時"mm"分"
// 56 | 上午/下午 hh"時"mm"分"ss"秒"
// 57 | [$-404]e/m/d
// 58 | [$-404]e"年"m"月"d"日"
//
// Number format code in zh-cn language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"年"m"月"
// 28 | m"月"d"日"
// 29 | m"月"d"日"
// 30 | m-d-yy
// 31 | yyyy"年"m"月"d"日"
// 32 | h"时"mm"分"
// 33 | h"时"mm"分"ss"秒"
// 34 | 上午/下午 h"时"mm"分"
// 35 | 上午/下午 h"时"mm"分"ss"秒
// 36 | yyyy"年"m"月
// 50 | yyyy"年"m"月
// 51 | m"月"d"日
// 52 | yyyy"年"m"月
// 53 | m"月"d"日
// 54 | m"月"d"日
// 55 | 上午/下午 h"时"mm"分
// 56 | 上午/下午 h"时"mm"分"ss"秒
// 57 | yyyy"年"m"月
// 58 | m"月"d"日"
//
// Number format code with unicode values provided for language glyphs where
// they occur in zh-tw language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-404]e/m/
// 28 | [$-404]e"5E74"m"6708"d"65E5
// 29 | [$-404]e"5E74"m"6708"d"65E5
// 30 | m/d/y
// 31 | yyyy"5E74"m"6708"d"65E5
// 32 | hh"6642"mm"5206
// 33 | hh"6642"mm"5206"ss"79D2
// 34 | 4E0A5348/4E0B5348hh"6642"mm"5206
// 35 | 4E0A5348/4E0B5348hh"6642"mm"5206"ss"79D2
// 36 | [$-404]e/m/
// 50 | [$-404]e/m/
// 51 | [$-404]e"5E74"m"6708"d"65E5
// 52 | 4E0A5348/4E0B5348hh"6642"mm"5206
// 53 | 4E0A5348/4E0B5348hh"6642"mm"5206"ss"79D2
// 54 | [$-404]e"5E74"m"6708"d"65E5
// 55 | 4E0A5348/4E0B5348hh"6642"mm"5206
// 56 | 4E0A5348/4E0B5348hh"6642"mm"5206"ss"79D2
// 57 | [$-404]e/m/
// 58 | [$-404]e"5E74"m"6708"d"65E5"
//
// Number format code with unicode values provided for language glyphs where
// they occur in zh-cn language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"5E74"m"6708
// 28 | m"6708"d"65E5
// 29 | m"6708"d"65E5
// 30 | m-d-y
// 31 | yyyy"5E74"m"6708"d"65E5
// 32 | h"65F6"mm"5206
// 33 | h"65F6"mm"5206"ss"79D2
// 34 | 4E0A5348/4E0B5348h"65F6"mm"5206
// 35 | 4E0A5348/4E0B5348h"65F6"mm"5206"ss"79D2
// 36 | yyyy"5E74"m"6708
// 50 | yyyy"5E74"m"6708
// 51 | m"6708"d"65E5
// 52 | yyyy"5E74"m"6708
// 53 | m"6708"d"65E5
// 54 | m"6708"d"65E5
// 55 | 4E0A5348/4E0B5348h"65F6"mm"5206
// 56 | 4E0A5348/4E0B5348h"65F6"mm"5206"ss"79D2
// 57 | yyyy"5E74"m"6708
// 58 | m"6708"d"65E5"`,
//
// Number format code in ja-jp language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-411]ge.m.
// 28 | [$-411]ggge"年"m"月"d"日
// 29 | [$-411]ggge"年"m"月"d"日
// 30 | m/d/y
// 31 | yyyy"年"m"月"d"日
// 32 | h"時"mm"分
// 33 | h"時"mm"分"ss"秒
// 34 | yyyy"年"m"月
// 35 | m"月"d"日
// 36 | [$-411]ge.m.
// 50 | [$-411]ge.m.
// 51 | [$-411]ggge"年"m"月"d"日
// 52 | yyyy"年"m"月
// 53 | m"月"d"日
// 54 | [$-411]ggge"年"m"月"d"日
// 55 | yyyy"年"m"月
// 56 | m"月"d"日
// 57 | [$-411]ge.m.
// 58 | [$-411]ggge"年"m"月"d"日"
//
// Number format code in th-th language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"年" mm"月" dd"日
// 28 | mm-d
// 29 | mm-d
// 30 | mm-dd-y
// 31 | yyyy"년" mm"월" dd"일
// 32 | h"시" mm"분
// 33 | h"시" mm"분" ss"초
// 34 | yyyy-mm-d
// 35 | yyyy-mm-d
// 36 | yyyy"年" mm"月" dd"日
// 50 | yyyy"年" mm"月" dd"日
// 51 | mm-d
// 52 | yyyy-mm-d
// 53 | yyyy-mm-d
// 54 | mm-d
// 55 | yyyy-mm-d
// 56 | yyyy-mm-d
// 57 | yyyy"年" mm"月" dd"日
// 58 | mm-dd
//
// Number format code with unicode values provided for language glyphs where
// they occur in ja-jp language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-411]ge.m.
// 28 | [$-411]ggge"5E74"m"6708"d"65E5
// 29 | [$-411]ggge"5E74"m"6708"d"65E5
// 30 | m/d/y
// 31 | yyyy"5E74"m"6708"d"65E5
// 32 | h"6642"mm"5206
// 33 | h"6642"mm"5206"ss"79D2
// 34 | yyyy"5E74"m"6708
// 35 | m"6708"d"65E5
// 36 | [$-411]ge.m.
// 50 | [$-411]ge.m.
// 51 | [$-411]ggge"5E74"m"6708"d"65E5
// 52 | yyyy"5E74"m"6708
// 53 | m"6708"d"65E5
// 54 | [$-411]ggge"5E74"m"6708"d"65E5
// 55 | yyyy"5E74"m"6708
// 56 | m"6708"d"65E5
// 57 | [$-411]ge.m.
// 58 | [$-411]ggge"5E74"m"6708"d"65E5"
//
// Number format code with unicode values provided for language glyphs where
// they occur in ko-kr language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"5E74" mm"6708" dd"65E5
// 28 | mm-d
// 29 | mm-d
// 30 | mm-dd-y
// 31 | yyyy"B144" mm"C6D4" dd"C77C
// 32 | h"C2DC" mm"BD84
// 33 | h"C2DC" mm"BD84" ss"CD08
// 34 | yyyy-mm-d
// 35 | yyyy-mm-d
// 36 | yyyy"5E74" mm"6708" dd"65E5
// 50 | yyyy"5E74" mm"6708" dd"65E5
// 51 | mm-d
// 52 | yyyy-mm-d
// 53 | yyyy-mm-d
// 54 | mm-d
// 55 | yyyy-mm-d
// 56 | yyyy-mm-d
// 57 | yyyy"5E74" mm"6708" dd"65E5
// 58 | mm-dd
//
// Number format code in ko-kr language:
//
// Index | Symbol
// -------+-------------------------------------------
// 59 | t
// 60 | t0.0
// 61 | t#,##
// 62 | t#,##0.0
// 67 | t0
// 68 | t0.00
// 69 | t# ?/
// 70 | t# ??/?
// 71 | ว/ด/ปปป
// 72 | ว-ดดด-ป
// 73 | ว-ดด
// 74 | ดดด-ป
// 75 | ช:น
// 76 | ช:นน:ท
// 77 | ว/ด/ปปปป ช:น
// 78 | นน:ท
// 79 | [ช]:นน:ท
// 80 | นน:ทท.
// 81 | d/m/bb
//
// Number format code with unicode values provided for language glyphs where
// they occur in th-th language:
//
// Index | Symbol
// -------+-------------------------------------------
// 59 | t
// 60 | t0.0
// 61 | t#,##
// 62 | t#,##0.0
// 67 | t0
// 68 | t0.00
// 69 | t# ?/
// 70 | t# ??/?
// 71 | 0E27/0E14/0E1B0E1B0E1B0E1
// 72 | 0E27-0E140E140E14-0E1B0E1
// 73 | 0E27-0E140E140E1
// 74 | 0E140E140E14-0E1B0E1
// 75 | 0E0A:0E190E1
// 76 | 0E0A:0E190E19:0E170E1
// 77 | 0E27/0E14/0E1B0E1B0E1B0E1B 0E0A:0E190E1
// 78 | 0E190E19:0E170E1
// 79 | [0E0A]:0E190E19:0E170E1
// 80 | 0E190E19:0E170E17.
// 81 | d/m/bb
//
// Excelize built-in currency formats are shown in the following table, only
// support these types in the following table (Index number is used only for
// markup and is not used inside an Excel file and you can't get formatted value
@ -1549,250 +1794,11 @@ func parseFormatStyleSet(style string) (*formatCellStyle, error) {
// 632 | ZWL
// 633 | ZWN
// 634 | ZWR
// Number format code in zh-tw language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-404]e/m/d
// 28 | [$-404]e"年"m"月"d"日"
// 29 | [$-404]e"年"m"月"d"日"
// 30 | m/d/yy
// 31 | yyyy"年"m"月"d"日"
// 32 | hh"時"mm"分"
// 33 | hh"時"mm"分"ss"秒"
// 34 | 上午/下午 hh"時"mm"分"
// 35 | 上午/下午 hh"時"mm"分"ss"秒"
// 36 | [$-404]e/m/d
// 50 | [$-404]e/m/d
// 51 | [$-404]e"年"m"月"d"日"
// 52 | 上午/下午 hh"時"mm"分"
// 53 | 上午/下午 hh"時"mm"分"ss"秒"
// 54 | [$-404]e"年"m"月"d"日"
// 55 | 上午/下午 hh"時"mm"分"
// 56 | 上午/下午 hh"時"mm"分"ss"秒"
// 57 | [$-404]e/m/d
// 58 | [$-404]e"年"m"月"d"日"
// Excelize support set custom number format for cell. For example, set number
// as date type in Uruguay (Spanish) format:
//
// Number format code in zh-cn language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"年"m"月"
// 28 | m"月"d"日"
// 29 | m"月"d"日"
// 30 | m-d-yy
// 31 | yyyy"年"m"月"d"日"
// 32 | h"时"mm"分"
// 33 | h"时"mm"分"ss"秒"
// 34 | 上午/下午 h"时"mm"分"
// 35 | 上午/下午 h"时"mm"分"ss"秒
// 36 | yyyy"年"m"月
// 50 | yyyy"年"m"月
// 51 | m"月"d"日
// 52 | yyyy"年"m"月
// 53 | m"月"d"日
// 54 | m"月"d"日
// 55 | 上午/下午 h"时"mm"分
// 56 | 上午/下午 h"时"mm"分"ss"秒
// 57 | yyyy"年"m"月
// 58 | m"月"d"日"
//
// Number format code with unicode values provided for language glyphs where
// they occur in zh-tw language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-404]e/m/
// 28 | [$-404]e"5E74"m"6708"d"65E5
// 29 | [$-404]e"5E74"m"6708"d"65E5
// 30 | m/d/y
// 31 | yyyy"5E74"m"6708"d"65E5
// 32 | hh"6642"mm"5206
// 33 | hh"6642"mm"5206"ss"79D2
// 34 | 4E0A5348/4E0B5348hh"6642"mm"5206
// 35 | 4E0A5348/4E0B5348hh"6642"mm"5206"ss"79D2
// 36 | [$-404]e/m/
// 50 | [$-404]e/m/
// 51 | [$-404]e"5E74"m"6708"d"65E5
// 52 | 4E0A5348/4E0B5348hh"6642"mm"5206
// 53 | 4E0A5348/4E0B5348hh"6642"mm"5206"ss"79D2
// 54 | [$-404]e"5E74"m"6708"d"65E5
// 55 | 4E0A5348/4E0B5348hh"6642"mm"5206
// 56 | 4E0A5348/4E0B5348hh"6642"mm"5206"ss"79D2
// 57 | [$-404]e/m/
// 58 | [$-404]e"5E74"m"6708"d"65E5"
//
// Number format code with unicode values provided for language glyphs where
// they occur in zh-cn language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"5E74"m"6708
// 28 | m"6708"d"65E5
// 29 | m"6708"d"65E5
// 30 | m-d-y
// 31 | yyyy"5E74"m"6708"d"65E5
// 32 | h"65F6"mm"5206
// 33 | h"65F6"mm"5206"ss"79D2
// 34 | 4E0A5348/4E0B5348h"65F6"mm"5206
// 35 | 4E0A5348/4E0B5348h"65F6"mm"5206"ss"79D2
// 36 | yyyy"5E74"m"6708
// 50 | yyyy"5E74"m"6708
// 51 | m"6708"d"65E5
// 52 | yyyy"5E74"m"6708
// 53 | m"6708"d"65E5
// 54 | m"6708"d"65E5
// 55 | 4E0A5348/4E0B5348h"65F6"mm"5206
// 56 | 4E0A5348/4E0B5348h"65F6"mm"5206"ss"79D2
// 57 | yyyy"5E74"m"6708
// 58 | m"6708"d"65E5"`,
//
// Number format code in ja-jp language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-411]ge.m.
// 28 | [$-411]ggge"年"m"月"d"日
// 29 | [$-411]ggge"年"m"月"d"日
// 30 | m/d/y
// 31 | yyyy"年"m"月"d"日
// 32 | h"時"mm"分
// 33 | h"時"mm"分"ss"秒
// 34 | yyyy"年"m"月
// 35 | m"月"d"日
// 36 | [$-411]ge.m.
// 50 | [$-411]ge.m.
// 51 | [$-411]ggge"年"m"月"d"日
// 52 | yyyy"年"m"月
// 53 | m"月"d"日
// 54 | [$-411]ggge"年"m"月"d"日
// 55 | yyyy"年"m"月
// 56 | m"月"d"日
// 57 | [$-411]ge.m.
// 58 | [$-411]ggge"年"m"月"d"日"
//
// Number format code in th-th language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"年" mm"月" dd"日
// 28 | mm-d
// 29 | mm-d
// 30 | mm-dd-y
// 31 | yyyy"년" mm"월" dd"일
// 32 | h"시" mm"분
// 33 | h"시" mm"분" ss"초
// 34 | yyyy-mm-d
// 35 | yyyy-mm-d
// 36 | yyyy"年" mm"月" dd"日
// 50 | yyyy"年" mm"月" dd"日
// 51 | mm-d
// 52 | yyyy-mm-d
// 53 | yyyy-mm-d
// 54 | mm-d
// 55 | yyyy-mm-d
// 56 | yyyy-mm-d
// 57 | yyyy"年" mm"月" dd"日
// 58 | mm-dd
//
// Number format code with unicode values provided for language glyphs where
// they occur in ja-jp language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | [$-411]ge.m.
// 28 | [$-411]ggge"5E74"m"6708"d"65E5
// 29 | [$-411]ggge"5E74"m"6708"d"65E5
// 30 | m/d/y
// 31 | yyyy"5E74"m"6708"d"65E5
// 32 | h"6642"mm"5206
// 33 | h"6642"mm"5206"ss"79D2
// 34 | yyyy"5E74"m"6708
// 35 | m"6708"d"65E5
// 36 | [$-411]ge.m.
// 50 | [$-411]ge.m.
// 51 | [$-411]ggge"5E74"m"6708"d"65E5
// 52 | yyyy"5E74"m"6708
// 53 | m"6708"d"65E5
// 54 | [$-411]ggge"5E74"m"6708"d"65E5
// 55 | yyyy"5E74"m"6708
// 56 | m"6708"d"65E5
// 57 | [$-411]ge.m.
// 58 | [$-411]ggge"5E74"m"6708"d"65E5"
//
// Number format code with unicode values provided for language glyphs where
// they occur in ko-kr language:
//
// Index | Symbol
// -------+-------------------------------------------
// 27 | yyyy"5E74" mm"6708" dd"65E5
// 28 | mm-d
// 29 | mm-d
// 30 | mm-dd-y
// 31 | yyyy"B144" mm"C6D4" dd"C77C
// 32 | h"C2DC" mm"BD84
// 33 | h"C2DC" mm"BD84" ss"CD08
// 34 | yyyy-mm-d
// 35 | yyyy-mm-d
// 36 | yyyy"5E74" mm"6708" dd"65E5
// 50 | yyyy"5E74" mm"6708" dd"65E5
// 51 | mm-d
// 52 | yyyy-mm-d
// 53 | yyyy-mm-d
// 54 | mm-d
// 55 | yyyy-mm-d
// 56 | yyyy-mm-d
// 57 | yyyy"5E74" mm"6708" dd"65E5
// 58 | mm-dd
//
// Number format code in ko-kr language:
//
// Index | Symbol
// -------+-------------------------------------------
// 59 | t
// 60 | t0.0
// 61 | t#,##
// 62 | t#,##0.0
// 67 | t0
// 68 | t0.00
// 69 | t# ?/
// 70 | t# ??/?
// 71 | ว/ด/ปปป
// 72 | ว-ดดด-ป
// 73 | ว-ดด
// 74 | ดดด-ป
// 75 | ช:น
// 76 | ช:นน:ท
// 77 | ว/ด/ปปปป ช:น
// 78 | นน:ท
// 79 | [ช]:นน:ท
// 80 | นน:ทท.
// 81 | d/m/bb
//
// Number format code with unicode values provided for language glyphs where
// they occur in th-th language:
//
// Index | Symbol
// -------+-------------------------------------------
// 59 | t
// 60 | t0.0
// 61 | t#,##
// 62 | t#,##0.0
// 67 | t0
// 68 | t0.00
// 69 | t# ?/
// 70 | t# ??/?
// 71 | 0E27/0E14/0E1B0E1B0E1B0E1
// 72 | 0E27-0E140E140E14-0E1B0E1
// 73 | 0E27-0E140E140E1
// 74 | 0E140E140E14-0E1B0E1
// 75 | 0E0A:0E190E1
// 76 | 0E0A:0E190E19:0E170E1
// 77 | 0E27/0E14/0E1B0E1B0E1B0E1B 0E0A:0E190E1
// 78 | 0E190E19:0E170E1
// 79 | [0E0A]:0E190E19:0E170E1
// 80 | 0E190E19:0E170E17.
// 81 | d/m/bb
// xlsx.NewStyle(`{"custom_number_format": "[$-380A]dddd\\,\\ dd\" de \"mmmm\" de \"yyyy;@"}`)
//
func (f *File) NewStyle(style string) (int, error) {
var cellXfsID int
@ -1857,6 +1863,9 @@ func setNumFmt(style *xlsxStyleSheet, formatCellStyle *formatCellStyle) int {
for i := 0; i < formatCellStyle.DecimalPlaces; i++ {
dp += "0"
}
if formatCellStyle.CustomNumFmt != nil {
return setCustomNumFmt(style, formatCellStyle)
}
_, ok := builtInNumFmt[formatCellStyle.NumFmt]
if !ok {
fc, currency := currencyNumFmt[formatCellStyle.NumFmt]
@ -1891,6 +1900,24 @@ func setNumFmt(style *xlsxStyleSheet, formatCellStyle *formatCellStyle) int {
return formatCellStyle.NumFmt
}
// setCustomNumFmt provides function to set custom number format code.
func setCustomNumFmt(style *xlsxStyleSheet, formatCellStyle *formatCellStyle) int {
nf := xlsxNumFmt{FormatCode: *formatCellStyle.CustomNumFmt}
if style.NumFmts != nil {
nf.NumFmtID = style.NumFmts.NumFmt[len(style.NumFmts.NumFmt)-1].NumFmtID + 1
style.NumFmts.NumFmt = append(style.NumFmts.NumFmt, &nf)
style.NumFmts.Count++
} else {
nf.NumFmtID = 164
numFmts := xlsxNumFmts{
NumFmt: []*xlsxNumFmt{&nf},
Count: 1,
}
style.NumFmts = &numFmts
}
return nf.NumFmtID
}
// setLangNumFmt provides function to set number format code with language.
func setLangNumFmt(style *xlsxStyleSheet, formatCellStyle *formatCellStyle) int {
numFmts, ok := langNumFmt[formatCellStyle.Lang]
@ -1902,21 +1929,20 @@ func setLangNumFmt(style *xlsxStyleSheet, formatCellStyle *formatCellStyle) int
if !ok {
return 0
}
nf := xlsxNumFmt{
FormatCode: fc,
NumFmtID: formatCellStyle.NumFmt,
}
nf := xlsxNumFmt{FormatCode: fc}
if style.NumFmts != nil {
nf.NumFmtID = style.NumFmts.NumFmt[len(style.NumFmts.NumFmt)-1].NumFmtID + 1
style.NumFmts.NumFmt = append(style.NumFmts.NumFmt, &nf)
style.NumFmts.Count++
} else {
nf.NumFmtID = formatCellStyle.NumFmt
numFmts := xlsxNumFmts{
NumFmt: []*xlsxNumFmt{&nf},
Count: 1,
}
style.NumFmts = &numFmts
}
return formatCellStyle.NumFmt
return nf.NumFmtID
}
// setFills provides function to add fill elements in the styles.xml by given

View File

@ -302,7 +302,7 @@ type formatFont struct {
Color string `json:"color"`
}
// formatCellStyle directly maps the styles settings of the borders.
// formatCellStyle directly maps the styles settings of the cells.
type formatCellStyle struct {
Border []struct {
Type string `json:"type"`
@ -327,8 +327,9 @@ type formatCellStyle struct {
Vertical string `json:"vertical"`
WrapText bool `json:"wrap_text"`
} `json:"alignment"`
NumFmt int `json:"number_format"`
DecimalPlaces int `json:"decimal_places"`
Lang string `json:"lang"`
NegRed bool `json:"negred"`
NumFmt int `json:"number_format"`
DecimalPlaces int `json:"decimal_places"`
CustomNumFmt *string `json:"custom_number_format"`
Lang string `json:"lang"`
NegRed bool `json:"negred"`
}