@@ -18,6 +18,7 @@ package exporter
1818
1919import (
2020 "configcenter/pkg/excel"
21+ "configcenter/src/common"
2122)
2223
2324type styleType string
@@ -37,6 +38,8 @@ const (
3738 noEditField styleType = "noEditField"
3839 // example 例子数据的单元格类型
3940 example styleType = "example"
41+ // normalField 普通数据单元格类型
42+ normalField styleType = "normal"
4043
4144 requiredFieldColor = "#FF0000"
4245 noEditHeaderColor = "fabf8f"
@@ -52,6 +55,30 @@ var generalBorder = []excel.Border{
5255 {Type : excel .Left , Color : borderColor , Style : 1 }, {Type : excel .Right , Color : borderColor , Style : 1 },
5356 {Type : excel .Top , Color : borderColor , Style : 1 }, {Type : excel .Bottom , Color : borderColor , Style : 1 },
5457}
58+ var styleTypeMap = map [styleType ]excel.Style {
59+ requiredField : {Fill : & excel.Fill {Type : excel .Pattern , Color : []string {noEditHeaderColor }, Pattern : 1 },
60+ Border : generalBorder },
61+
62+ noEditHeader : {Fill : & excel.Fill {Type : excel .Pattern , Color : []string {noEditFieldColor }, Pattern : 1 },
63+ Border : generalBorder },
64+
65+ noEditField : {Fill : & excel.Fill {Type : excel .Pattern , Color : []string {firstRowColor }, Pattern : 1 },
66+ Border : generalBorder },
67+
68+ firstRow : {Fill : & excel.Fill {Type : excel .Pattern , Color : []string {generalHeaderColor }, Pattern : 1 },
69+ Border : generalBorder },
70+
71+ generalHeader : {Fill : & excel.Fill {Type : excel .Pattern , Color : []string {tableHeaderColor }, Pattern : 1 },
72+ Border : generalBorder },
73+
74+ tableHeader : {Fill : & excel.Fill {Type : excel .Pattern , Color : []string {exampleColor }, Pattern : 1 },
75+ Border : generalBorder },
76+
77+ example : {Fill : & excel.Fill {Type : excel .Pattern , Color : []string {firstRowColor }, Pattern : 1 },
78+ Border : generalBorder , Font : & excel.Font {Color : requiredFieldColor }},
79+
80+ normalField : {Fill : & excel.Fill {Type : excel .Pattern , Pattern : 1 }, Border : generalBorder },
81+ }
5582
5683var createStyleFuncMap = make (map [styleType ]createStyleFunc )
5784
@@ -67,6 +94,35 @@ func init() {
6794
6895type createStyleFunc func (s * styleCreator ) (int , error )
6996
97+ // handlePropertyTypeNumFmt propType->excel code
98+ func handlePropertyTypeNumFmt (propType string ) int {
99+ switch propType {
100+ case common .FieldTypeInt :
101+ return 1
102+ case common .FieldTypeFloat :
103+ return 2
104+ case common .FieldTypeLongChar , common .FieldTypeSingleChar :
105+ return 49
106+ case common .FieldTypeInnerTable ,
107+ common .FieldTypeEnum ,
108+ common .FieldTypeEnumMulti ,
109+ common .FieldTypeBool :
110+ return 0
111+ }
112+ return 0
113+ }
114+
115+ func getDataStyleFunc (style styleType , property string ) createStyleFunc {
116+ return func (s * styleCreator ) (int , error ) {
117+ style := styleTypeMap [style ]
118+ style .NumFmt = handlePropertyTypeNumFmt (property )
119+ result , err := s .excel .NewStyle (& style )
120+ if err != nil {
121+ return 0 , err
122+ }
123+ return result , nil
124+ }
125+ }
70126func getNoEditHeaderStyleFunc () createStyleFunc {
71127 return func (s * styleCreator ) (int , error ) {
72128 style := & excel.Style {Fill : & excel.Fill {Type : "pattern" , Color : []string {noEditHeaderColor }, Pattern : 1 },
@@ -205,3 +261,22 @@ func (s *styleCreator) getStyle(style styleType) (int, error) {
205261
206262 return result , nil
207263}
264+
265+ func (s * styleCreator ) getPropertyStyle (style styleType , propertyType string ) (int , error ) {
266+
267+ if len (propertyType ) == 0 {
268+ return s .getStyle (style )
269+ }
270+
271+ styleKey := styleType (string (style ) + "_" + propertyType )
272+ result , ok := s .styleMap [styleKey ]
273+ if ! ok {
274+ var err error
275+ result , err = getDataStyleFunc (style , propertyType )(s )
276+ if err != nil {
277+ return 0 , err
278+ }
279+ s .styleMap [styleKey ] = result
280+ }
281+ return result , nil
282+ }
0 commit comments