diff --git a/cell_test.go b/cell_test.go index d4a5b02..09627c2 100644 --- a/cell_test.go +++ b/cell_test.go @@ -2,6 +2,7 @@ package excelize import ( "fmt" + "path/filepath" "testing" "github.com/stretchr/testify/assert" @@ -94,3 +95,15 @@ func BenchmarkSetCellValue(b *testing.B) { } } } + +func TestOverflowNumericCell(t *testing.T) { + f, err := OpenFile(filepath.Join("test", "OverflowNumericCell.xlsx")) + if !assert.NoError(t, err) { + t.FailNow() + } + // source of xlsx file is Russia, don`t touch it, elsewhere bug not reproduced + val, err := f.GetCellValue("Лист1", "A1") + assert.NoError(t, err) + // GOARCH=amd64 - all ok; GOARCH=386 - actual : "-2147483648" + assert.Equal(t, "8595602512225", val, "A1 should be 8595602512225") +} diff --git a/styles.go b/styles.go index 16f8030..4d6071a 100644 --- a/styles.go +++ b/styles.go @@ -852,7 +852,7 @@ func formatToInt(i int, v string) string { if err != nil { return v } - return fmt.Sprintf("%d", int(f)) + return fmt.Sprintf("%d", int64(f)) } // formatToFloat provides a function to convert original string to float diff --git a/test/OverflowNumericCell.xlsx b/test/OverflowNumericCell.xlsx new file mode 100644 index 0000000..1844888 Binary files /dev/null and b/test/OverflowNumericCell.xlsx differ