Browse Source

Priority cell style, when the cell and the column at the same time with the style attribute. Relate issue #54 and #56.

Ri Xu 8 years ago
parent
commit
d372bb977f
2 changed files with 7 additions and 8 deletions
  1. 7 8
      excelize.go
  2. BIN
      test/Workbook1.xlsx

+ 7 - 8
excelize.go

@@ -135,23 +135,22 @@ func (f *File) SetCellInt(sheet, axis string, value int) {
 	completeRow(xlsx, rows, cell)
 	completeCol(xlsx, rows, cell)
 
-	xlsx.SheetData.Row[xAxis].C[yAxis].S = f.prepareCellStyle(xlsx, cell)
+	xlsx.SheetData.Row[xAxis].C[yAxis].S = f.prepareCellStyle(xlsx, cell, xlsx.SheetData.Row[xAxis].C[yAxis].S)
 	xlsx.SheetData.Row[xAxis].C[yAxis].T = ""
 	xlsx.SheetData.Row[xAxis].C[yAxis].V = strconv.Itoa(value)
 }
 
 // prepareCellStyle provides function to prepare style index of cell in
 // worksheet by given column index.
-func (f *File) prepareCellStyle(xlsx *xlsxWorksheet, col int) int {
-	s := 0
-	if xlsx.Cols != nil {
+func (f *File) prepareCellStyle(xlsx *xlsxWorksheet, col, style int) int {
+	if xlsx.Cols != nil && style == 0 {
 		for _, v := range xlsx.Cols.Col {
 			if v.Min <= col && col <= v.Max {
-				s = v.Style
+				style = v.Style
 			}
 		}
 	}
-	return s
+	return style
 }
 
 // SetCellStr provides function to set string type value of a cell. Total number
@@ -183,7 +182,7 @@ func (f *File) SetCellStr(sheet, axis, value string) {
 			}
 		}
 	}
-	xlsx.SheetData.Row[xAxis].C[yAxis].S = f.prepareCellStyle(xlsx, cell)
+	xlsx.SheetData.Row[xAxis].C[yAxis].S = f.prepareCellStyle(xlsx, cell, xlsx.SheetData.Row[xAxis].C[yAxis].S)
 	xlsx.SheetData.Row[xAxis].C[yAxis].T = "str"
 	xlsx.SheetData.Row[xAxis].C[yAxis].V = value
 }
@@ -205,7 +204,7 @@ func (f *File) SetCellDefault(sheet, axis, value string) {
 	completeRow(xlsx, rows, cell)
 	completeCol(xlsx, rows, cell)
 
-	xlsx.SheetData.Row[xAxis].C[yAxis].S = f.prepareCellStyle(xlsx, cell)
+	xlsx.SheetData.Row[xAxis].C[yAxis].S = f.prepareCellStyle(xlsx, cell, xlsx.SheetData.Row[xAxis].C[yAxis].S)
 	xlsx.SheetData.Row[xAxis].C[yAxis].T = ""
 	xlsx.SheetData.Row[xAxis].C[yAxis].V = value
 }

BIN
test/Workbook1.xlsx