소스 검색

BugFix: `SetCellValue` function assertion logic will cause panic in some case.

Ri Xu 9 년 전
부모
커밋
2a3620e750
2개의 변경된 파일19개의 추가작업 그리고 1개의 파일을 삭제
  1. 13 1
      excelize.go
  2. 6 0
      excelize_test.go

+ 13 - 1
excelize.go

@@ -37,8 +37,20 @@ func OpenFile(filename string) (*File, error) {
 // SetCellValue provide function to set int or string type value of a cell.
 func (f *File) SetCellValue(sheet string, axis string, value interface{}) {
 	switch t := value.(type) {
-	case int, int8, int16, int32, int64, float32, float64:
+	case int:
 		f.SetCellInt(sheet, axis, value.(int))
+	case int8:
+		f.SetCellInt(sheet, axis, int(value.(int8)))
+	case int16:
+		f.SetCellInt(sheet, axis, int(value.(int16)))
+	case int32:
+		f.SetCellInt(sheet, axis, int(value.(int32)))
+	case int64:
+		f.SetCellInt(sheet, axis, int(value.(int64)))
+	case float32:
+		f.SetCellInt(sheet, axis, int(value.(float32)))
+	case float64:
+		f.SetCellInt(sheet, axis, int(value.(float64)))
 	case string:
 		f.SetCellStr(sheet, axis, t)
 	case []byte:

+ 6 - 0
excelize_test.go

@@ -40,6 +40,12 @@ func TestExcelize(t *testing.T) {
 	f1.SetCellValue("Sheet2", "F1", "Hello")
 	f1.SetCellValue("Sheet2", "G1", []byte("World"))
 	f1.SetCellValue("Sheet2", "F2", 42)
+	f1.SetCellValue("Sheet2", "F2", int8(42))
+	f1.SetCellValue("Sheet2", "F2", int16(42))
+	f1.SetCellValue("Sheet2", "F2", int32(42))
+	f1.SetCellValue("Sheet2", "F2", int64(42))
+	f1.SetCellValue("Sheet2", "F2", float32(42))
+	f1.SetCellValue("Sheet2", "F2", float64(42))
 	f1.SetCellValue("Sheet2", "G2", nil)
 	// Test completion column.
 	f1.SetCellValue("Sheet2", "M2", nil)