Archery icon indicating copy to clipboard operation
Archery copied to clipboard

archery导出excel格式时,部分长int数据变成了科学计数法

Open riverdba opened this issue 3 years ago • 6 comments

重现步骤

查询bigint类型的字段,存储内容为: ID 3019820881315840 3019822890060800 3019828255950848 3019839946000384 3019844132868096 3019853618186240

预期外的结果

导出后,打开excel后的内容为: image

日志文本

No response

版本

1.8.1

部署方式

Docker

是否还有其他可以辅助定位问题的信息?比如数据库版本等

MySQL5.7

riverdba avatar Nov 23 '22 10:11 riverdba

我也有这个问题,我用的1.8.5版本 ,我的业务数据,小数点后有18位,导出时也被四舍五入了,我序列化成字符串也没解决这个BUG,貌似是前端JS自动把我的字符串化成数字类型了,

0vally1 avatar Dec 27 '22 02:12 0vally1

@riverdba @0vally1 这个是excel 的问题。解决方案,用sublime这类文本编辑器打开csv。或者是新建空白的excel,使用数据-> 数据导入,再定义列类型时候选择文本即可。此问题非程序问题

如果不知道,不要瞎指点,请再补充一下基础知识,JavaScript 中的 Number 类型使用 IEEE 754 标准来表示浮点数,具有固定的双精度格式,即 64 位。这意味着 JavaScript 可以准确地表示大约 15 到 17 位小数。也就是,前端JS的小数位只有17位,超过的直接被砍掉了,即使它的问题,excel导出时,一样可以编辑样式,定义写入的excel列类型

0vally1 avatar Aug 28 '23 03:08 0vally1

欢迎 pr

LeoQuote avatar Aug 28 '23 03:08 LeoQuote

@riverdba Sry ,没看清是ms-excel格式,习惯性把导出csv当成excel 格式了

tonyhu214 avatar Aug 28 '23 03:08 tonyhu214

image image 如果按照您说的,范围超限结果应该是第一行第一列。所以说当前应该不是前端的数字类型范围问题。 怎么说呢,要不所有单元格设置成文本?

tonyhu214 avatar Aug 28 '23 04:08 tonyhu214

image image 如果按照您说的,范围超限结果应该是第一行第一列。所以说当前应该不是前端的数字类型范围问题。 怎么说呢,要不所有单元格设置成文本?

小数位,小数位,小数位,excel,不是csv,我就不贴图了,你认为就你认为吧,JS前端小数位是17位,这个导出目前是前端导出,不是后端导出,你不用回复了,你是对的,

0vally1 avatar Aug 28 '23 10:08 0vally1