找回密码
 立即注册

QQ登录

只需一步,快速开始

大Vi

中级会员

140

主题

309

帖子

975

积分

中级会员

积分
975
大Vi
中级会员   /  发表于:2022-9-20 11:27  /   查看:974  /  回复:6
1金币
本帖最后由 大Vi 于 2022-9-20 11:43 编辑



同样一份数据,源文件导入后打印数据部分数据带了多位精度,另存后,没有任何修改,打印的数据又正常了,这是软件兼容问题吗?
  1. excelIO.open(
  2.             file,
  3.             (spreadJSON: object) => {
  4.   console.log(spreadJSON)
  5. })
复制代码
源文件导入,打印:
image.png202604064.png


office的excel另存后导入打印还是错的,wps另存后再次导入,打印,又正常了,表格真实值就是这样的:

   image.png420707396.png



最佳答案

查看完整内容

需求我这边已经了解了,这个问题的原因就是excel和wps的浮点误差,但是显示也是正常的 你把xlsx导出到spreadjs后,通过getValue方法就能拿到你说的实际值,即编辑时的值(对存储的值进行了误差的优化), sheet.getValue(sheet.getActiveRowIndex(),sheet.getActiveColumnIndex()) 如果你是要拿到显示的值(格式化后的字符串),可以通过sheet.getText来获取,拿到的结果就是格式化后4430.22

6 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-20 11:27:58
来自 7#
本帖最后由 Richard.Ma 于 2022-10-26 00:11 编辑

需求我这边已经了解了,这个问题的原因就是excel和wps的浮点误差,但是显示也是正常的

你把xlsx导出到spreadjs后,通过getValue方法就能拿到你说的实际值,即编辑时的值(对存储的值进行了误差的优化),

sheet.getValue(sheet.getActiveRowIndex(),sheet.getActiveColumnIndex())

image.png518504943.png


如果你是要拿到显示的值(格式化后的字符串),可以通过sheet.getText来获取,拿到的结果就是格式化后4430.22
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-20 14:57:43
2#
你这边说的打印是指用上面的excelIO.open代码得到的json直接consol.log吧,

这里的json基本就是被导入的xlsx文件中的原始数据,
从你的描述来看:原始文件以及excel另存为的xslx是一个结果, WPS另存为的是另一个结果
只能说明EXCEL,WPS存储的xlsx文件中本身在数字的精度处理上存在差异(这个精度可能并不会体现在显示上,只是在存储的数值中),和Spreadjs本身没有什么关系。

你可以把原始文件发上来,我们做进一步测试,另外你这边目前的需求或者需要解决的问题具体是什么
回复 使用道具 举报
大Vi
中级会员   /  发表于:2022-9-20 16:05:38
3#
本帖最后由 大Vi 于 2022-9-20 16:08 编辑
Richard.Ma 发表于 2022-9-20 14:57
你这边说的打印是指用上面的excelIO.open代码得到的json直接consol.log吧,

这里的json基本就是被导入的 ...

源文件已上传,我的需求是拿到表格真实的值,
image.png761322021.png image.png663977660.png 在我看来,真实值就是4430.2153,为何同样的数据导入,部分单元格变成后面带了很多00001的数据
image.png259071044.png

源文件444.zip

8.54 KB, 阅读权限: 150, 下载次数: 6

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-20 17:11:34
4#

真实的值是包含0000000的,下面的截图是你发过来的文件,通过xlsx文件解析工具打开的结果,导入到spreadjs中这个误差仍然存在,
但是实际上在excel或者spreadjs中,在编辑时单元格值都是显示正常的。

你现在需要获取4430.2153这个值是需要用来做什么,如果只是想要引用这个单元格做后续计算的话,那么本身这个误差不会影响计算

image.png985256347.png
回复 使用道具 举报
大Vi
中级会员   /  发表于:2022-9-20 17:28:02
5#
Richard.Ma 发表于 2022-9-20 17:11
真实的值是包含0000000的,下面的截图是你发过来的文件,通过xlsx文件解析工具打开的结果,导入到spreadj ...

因为有需求要判断数据的长度,所以就会有误解,明明看到了是只有小数两位,为什么真正的隐藏值后面还有一堆,我只是要取最真实的数据,请问怎么拿
回复 使用道具 举报
大Vi
中级会员   /  发表于:2022-9-20 17:29:01
6#
Richard.Ma 发表于 2022-9-20 17:11
真实的值是包含0000000的,下面的截图是你发过来的文件,通过xlsx文件解析工具打开的结果,导入到spreadj ...

而且  是什么原因造成的看起来是两位小数的数值还有一堆看不见的小数呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部