找回密码
 立即注册

QQ登录

只需一步,快速开始

前端小菜鸟

初级会员

25

主题

90

帖子

273

积分

初级会员

积分
273
前端小菜鸟
初级会员   /  发表于:2022-2-23 09:34  /   查看:2295  /  回复:3
10金币
本帖最后由 前端小菜鸟 于 2022-2-23 10:42 编辑

我有一个excel数据导入导出功能。操作步骤如下:
首先数据导出,导出后修改数据。
此时,如果我在 数据后几列,增加公式进行前几列的数值计算,得出结果后将数据复制粘贴到前几列(以数值型进行复制),再将后几列数据删除(其实我就是利用表格公式进行简单计算后覆盖部分数据)。然后不再做任何操作,再上传excel。数据导入成功后部分之前被复制粘贴的数据会莫名多出几位小数,例如:2.662会变为2.662000000000001。
我的导入代码如下:

import(e, spread, templateName = '1', colIndex = 0, message = undefined) {
    this.msg.warning('正在导入数据...');
    let file = e.target.files[0];
    var excelIo = new Excel.IO();
    excelIo.open(file, function (json) {
//此时查看json数据内容时已经出现多个0的问题
      setTimeout(() => {
        var data = json.sheets[templateName].data.dataTable;
        var sheet = spread.getSheetFromName(templateName);
        //部分操作
        if (message != undefined) {
          message.success('导入完成');
        }
      }, 500);
    }, function (e) {
      alert(e.errorMessage);
    }, {});
    this.isImport = true;
    return this.isImport;
  }

(我还发现,当我操作excel表格时,如果复制完成的数据我再双击部分复制数据,也不进行具体修改,再关闭excel时,excel会提示我是否保存修改信息,此时的excel是否在我
对数据进行单元格双击时,改变了某些东西???如果我进行了这样的操作,导入数据时就不会发生问题了)
_F0}_H{W~P_Y89}WPBX_]{1.png754916991.png
原excel
RNGECYZ8PC]@FW69A5_LD5H.png669325256.png


最佳答案

查看完整内容

这边分析这个表单发现,在excel中存储的数据就是带有这些小数位的,请问这个excel具体是如何产生的呢? 这边根据上面描述的操作,对C1:E1在F1中求和,求和后将公式的值粘贴到B1,未能复现该问题,请再详细描述复现的步骤,这样我们才能更加有效地定位该问题。

3 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-2-23 09:34:39
来自 4#
前端小菜鸟 发表于 2022-2-23 10:01
不是精度问题,因为我只是一些简单数据的加和等,没有涉及乘除等复杂计算,没有那么大的小数问题。不能修 ...

这边分析这个表单发现,在excel中存储的数据就是带有这些小数位的,请问这个excel具体是如何产生的呢?
image.png44804686.png

这边根据上面描述的操作,对C1:E1在F1中求和,求和后将公式的值粘贴到B1,未能复现该问题,请再详细描述复现的步骤,这样我们才能更加有效地定位该问题。
image.png664581908.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-2-23 09:48:55
2#
从图的表现来看,应该是js的精度问题,建议尝试添加下面的代码
GC.Spread.CalcEngine.Functions.CALC_PRECISION = 14

若仍不能解决,请提供最终的excel文件和demo对应的demo这边来调研一下。
回复 使用道具 举报
前端小菜鸟
初级会员   /  发表于:2022-2-23 10:01:29
3#
本帖最后由 前端小菜鸟 于 2022-2-23 10:41 编辑
Derrick.Jiao 发表于 2022-2-23 09:48
从图的表现来看,应该是js的精度问题,建议尝试添加下面的代码
GC.Spread.CalcEngine.Functions.CALC_PREC ...

不是精度问题,因为我只是一些简单数据的加和等,没有涉及乘除等复杂计算,没有那么大的小数问题。不能修改附件中的任何信息,否则不能复现。

产品销售 (7).zip

12.07 KB, 下载次数: 90

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部