Skip to content

Commit

Permalink
This closes #1027 and closes #1028
Browse files Browse the repository at this point in the history
* Fix build-in scientific number format failed
* An error will be returned if given an invalid custom number format when creating a new style
  • Loading branch information
xuri committed Sep 28, 2021
1 parent 490f306 commit 2d8b5b1
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
2 changes: 2 additions & 0 deletions errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ var (
// ErrDefinedNameduplicate defined the error message on the same name
// already exists on the scope.
ErrDefinedNameduplicate = errors.New("the same name already exists on the scope")
// ErrCustomNumFmt defined the error message on receive the empty parameter.
ErrCustomNumFmt = errors.New("custom number format can not be empty")
// ErrFontLength defined the error message on the length of the font
// family name overflow.
ErrFontLength = errors.New("the length of the font family name must be smaller than or equal to 31")
Expand Down
5 changes: 4 additions & 1 deletion styles.go
Original file line number Diff line number Diff line change
Expand Up @@ -930,7 +930,7 @@ func formatToE(v string, format string) string {
if err != nil {
return v
}
return fmt.Sprintf("%.e", f)
return fmt.Sprintf("%.2E", f)
}

// parseTime provides a function to returns a string parsed using time.Time.
Expand Down Expand Up @@ -1115,6 +1115,9 @@ func parseFormatStyleSet(style interface{}) (*Style, error) {
return &fs, ErrFontSize
}
}
if fs.CustomNumFmt != nil && len(*fs.CustomNumFmt) == 0 {
err = ErrCustomNumFmt
}
return &fs, err
}

Expand Down
16 changes: 14 additions & 2 deletions styles_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,10 +203,13 @@ func TestNewStyle(t *testing.T) {
_, err = f.NewStyle(Style{})
assert.EqualError(t, err, ErrParameterInvalid.Error())

var exp string
_, err = f.NewStyle(&Style{CustomNumFmt: &exp})
assert.EqualError(t, err, ErrCustomNumFmt.Error())
_, err = f.NewStyle(&Style{Font: &Font{Family: strings.Repeat("s", MaxFontFamilyLength+1)}})
assert.EqualError(t, err, "the length of the font family name must be smaller than or equal to 31")
assert.EqualError(t, err, ErrFontLength.Error())
_, err = f.NewStyle(&Style{Font: &Font{Size: MaxFontSize + 1}})
assert.EqualError(t, err, "font size must be between 1 and 409 points")
assert.EqualError(t, err, ErrFontSize.Error())

// new numeric custom style
fmt := "####;####"
Expand Down Expand Up @@ -240,6 +243,15 @@ func TestNewStyle(t *testing.T) {

nf = f.Styles.CellXfs.Xf[styleID]
assert.Equal(t, 32, *nf.NumFmtID)

// Test set build-in scientific number format
styleID, err = f.NewStyle(&Style{NumFmt: 11})
assert.NoError(t, err)
assert.NoError(t, f.SetCellStyle("Sheet1", "A1", "B1", styleID))
assert.NoError(t, f.SetSheetRow("Sheet1", "A1", &[]float64{1.23, 1.234}))
rows, err := f.GetRows("Sheet1")
assert.NoError(t, err)
assert.Equal(t, [][]string{{"1.23E+00", "1.23E+00"}}, rows)
}

func TestGetDefaultFont(t *testing.T) {
Expand Down

0 comments on commit 2d8b5b1

Please sign in to comment.