找回密码
 立即注册

QQ登录

只需一步,快速开始

敏敏

注册会员

3

主题

8

帖子

33

积分

注册会员

积分
33
  • 117

    金币

  • 3

    主题

  • 8

    帖子

最新发帖
敏敏
注册会员   /  发表于:2022-4-15 16:19  /   查看:2744  /  回复:7
本帖最后由 敏敏 于 2022-4-19 15:07 编辑

image.png238949584.png
image.png341641539.png 单元格的数据格式是用的自定义数据格式
导出后的列表还是原数据,没有以亿万为单位


7 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-4-15 18:27:15
沙发
你这边使用的是spreadjs还是winforms?
回复 使用道具 举报
敏敏
注册会员   /  发表于:2022-4-15 18:36:00
板凳
用的是spreadjs
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-4-16 01:57:57
地板
好的,目前你是设置了什么自定义格式来设置的“亿”,我这边需要重现问题,然后在看看是什么原因
回复 使用道具 举报
敏敏
注册会员   /  发表于:2022-4-19 15:12:27
5#
本帖最后由 敏敏 于 2022-4-19 15:14 编辑
Richard.Ma 发表于 2022-4-16 01:57
好的,目前你是设置了什么自定义格式来设置的“亿”,我这边需要重现问题,然后在看看是什么原因

1650352286(1).jpg245143126.png
image.png895374450.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-4-19 16:04:06
6#
不好意思,可以直接复制代码上来吗,或者上传一个代码文件也行
我需要在这边重现问题
回复 使用道具 举报
敏敏
注册会员   /  发表于:2022-4-19 16:15:45
7#
本帖最后由 敏敏 于 2022-4-19 16:24 编辑
Richard.Ma 发表于 2022-4-19 16:04
不好意思,可以直接复制代码上来吗,或者上传一个代码文件也行
我需要在这边重现问题

           // 自定义数字格式
              var CustomFormatterTest = function () {}
              CustomFormatterTest.prototype = new GC.Spread.Formatter.FormatterBase()
              // format方法中,第一个参数obj就是当前单元格的值(带类型)
              CustomFormatterTest.prototype.format = function (obj, conditionalForeColor) {
                return that.number_format(obj, 2, '.', ',', false)
              }

    /*
    * 参数说明:
    * number:要格式化的数字
    * decimals:保留几位小数
    * decPoint:小数点符号
    * thousandsSep:千分位符号
    * isRoundUp:是否四舍五入
    * */
    number_format (number, decimals, decPoint, thousandsSep, isRoundUp) {
      number = (number + '').replace(/[^0-9+-Ee.]/g, '')      const n = !isFinite(+number) ? 0 : +number
      const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
      const sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep

      const dec = (typeof decPoint === 'undefined') ? '.' : decPoint
      let s = ''
      const toFixedFix = function (n, prec) {
        var k = Math.pow(10, prec)
        // 是否四舍五入
        if (isRoundUp) {
          return '' + Math.round(n * k) / k
        }
        // floor 实现了只舍去不进位的逻辑
        return '' + Math.floor(n * k) / k
      }
      s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
      var re = /(-?\d+)(\d{3})/
      while (re.test(s[0])) {
        s[0] = s[0].replace(re, '$1' + sep + '$2')
      }

      if ((s[1] || '').length < prec) {
        s[1] = s[1] || ''
      }
      // 当小数部分为空时,不显示小数点
      if (s[1] === '') {
        return s.join('')
      }
      return s.join(dec)
    }

页面显示的是处理过的数据,但导出的列表数据格式是没有处理过的
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-4-19 18:32:39
8#
您好,确认了一下,spreadjs中的单元格格式本身确实无法支持导出到excel中,因为excel本身是无法支持这些代码方法的。

自定义格式只支持在spreadjs中显示
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部