找回密码
 立即注册

QQ登录

只需一步,快速开始

yachu

初级会员

12

主题

50

帖子

217

积分

初级会员

积分
217
yachu
初级会员   /  发表于:2018-10-9 15:05  /   查看:5686  /  回复:13
使用这种数组对象渲染出来的 Excel 导出之后没有数据。
let dataSource = [
           { ID:0, Name:'A', Info1:'Info0' },
           { ID:1, Name:'B', Info1:'Info1' },
           { ID:2, Name:'C', Info1:'Info2' },
        ];
而像下图这样的数据通过 spread.fromJSON(jsonData) 展示出来的 Excel 导出之后没有问题,保存的有数据。这是由什么问题引起的?

官方 Excel 导入导出例子的数据

官方 Excel 导入导出例子的数据

13 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-10-9 17:57:17
沙发
数据源序列化需要加 includeBindingSource: true
例如:
spread1.toJSON( { includeBindingSource: true } )
回复 使用道具 举报
yachu
初级会员   /  发表于:2018-10-10 10:28:05
板凳
本帖最后由 yachu 于 2018-10-10 10:31 编辑
ClarkPan 发表于 2018-10-9 17:57
数据源序列化需要加 includeBindingSource: true
例如:
spread1.toJSON( { includeBindingSource: true ...

可以导出数据了,但是根数据的字段对应的是数组的数据,可以展示,导出之后没有数据。
就像 rolesDesc roles 可以渲染,导出之后没有数据。
还有就是每一列的列头导出不出来。
Image 2.png
Image 1.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-10-10 10:31:29
地板
这个因为Excel列头无法自定义设置,所以默认不会导出
可以在之前的基础上设置frozenRowsAsColumnHeaders,导出列头至第一行
spread1.toJSON( { includeBindingSource: true,frozenRowsAsColumnHeaders:true} )
回复 使用道具 举报
yachu
初级会员   /  发表于:2018-10-10 10:47:31
5#
本帖最后由 yachu 于 2018-10-10 10:48 编辑
ClarkPan 发表于 2018-10-10 10:31
这个因为Excel列头无法自定义设置,所以默认不会导出
可以在之前的基础上设置frozenRowsAsColumnHeaders, ...

应该是 columnHeadersAsFrozenRows:true, 吧?这个是 toJSON 中的属性设置, fromJSON 方法中是 frozenRowsAsColumnHeaders:true 对吧?文档中查到的,一开始设置没出效果,现在可以了。
还有就是渲染 Excel 表的数据其中的字段对应的是数组数据不是字符串,可以展示,但导出之后没有数据。
就像
roles: ["MERCHANT"]
rolesDesc: ["贸易商"]
可以渲染,导出之后没有数据。这个问题有办法解决吗?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-10-10 15:51:09
6#
对,toJSON和fromJSON具体的使用方法,我发API链接给您参考:

http://help.grapecity.com/spread ... rame.html#json.html

您这个roles: ["MERCHANT"]的数据是怎么生成的?是后台组织的吗?能否上传一个完整的dataSource我这边重现一下。
回复 使用道具 举报
yachu
初级会员   /  发表于:2018-10-10 16:44:40
7#
本帖最后由 yachu 于 2018-10-10 16:47 编辑
KevinChen 发表于 2018-10-10 15:51
对,toJSON和fromJSON具体的使用方法,我发API链接给您参考:

http://help.grapecity.com/spread/Spread ...

没问题。[
  {
    "orgId": "7c378335-c40a-457d-9ea8-19290aeb8c5b",
    "orgName": "宜宾海丰和锐有限公司",
    "registerDate": "2006-03-04",
    "auditDate": "2018-09-27 10:29:31",
    "legalPerson": "邓敏",
    "businessStart": "2006-03-04",
    "businessEnd": "长期",
    "registeredCapital": 212832,
    "licenseId": "91511523784729819F",
    "creditCode": "G10511523000044406",
    "creditPeriod": "2017-07-23",
    "accountPermitsId": "J6714000044403",
    "roles": ["MERCHANT"],
    "rolesDesc": ["贸易商"],
    "orgType": "INCORPORATED",
    "orgTypeDesc": "法人企业",
    "corpTypeDesc": "有限公司",
    "corpType": "LIMITED_LIABILITY",
    "status": "CONFIRMED",
    "statusDesc": "审核通过"
  },
  {
    "orgId": "3158360e-7830-454b-b982-0b1910082dbe",
    "orgName": "宜宾吉川商贸有限公司",
    "registerDate": "2017-05-16",
    "auditDate": "2018-09-27 10:34:14",
    "legalPerson": "杨玉娇",
    "businessStart": "2017-05-16",
    "businessEnd": "长期",
    "registeredCapital": 518,
    "licenseId": "91511500MA657Y7C6A",
    "creditCode": "G10511502003252704",
    "creditPeriod": "2019-07-23",
    "accountPermitsId": "J6710003252701",
    "roles": ["MERCHANT"],
    "rolesDesc": ["贸易商"],
    "orgType": "INCORPORATED",
    "orgTypeDesc": "法人企业",
    "corpTypeDesc": "有限公司",
    "corpType": "LIMITED_LIABILITY",
    "status": "CONFIRMED",
    "statusDesc": "审核通过"
  },
  {
    "orgId": "ce012bc5-3c8d-4700-90e4-8c07c352d72b",
    "orgName": "曲靖市第二人民医院检验科",
    "registerDate": "2018-09-23",
    "auditDate": "2018-09-27 06:05:09",
    "legalPerson": "咯哈哈哈",
    "businessStart": "2018-09-25",
    "businessEnd": "长期",
    "registeredCapital": 5000,
    "licenseId": "qjyy0001",
    "creditCode": "qj0001",
    "creditPeriod": "2018-09-25",
    "accountPermitsId": "2250",
    "roles": ["MERCHANT"],
    "rolesDesc": ["贸易商"],
    "orgType": "INCORPORATED",
    "orgTypeDesc": "法人企业",
    "corpTypeDesc": "私营企业",
    "corpType": "PRIVATE",
    "status": "CONFIRMED",
    "statusDesc": "审核通过"
  }
]

json 和 js 文件不能上传。


回复 使用道具 举报
yachu
初级会员   /  发表于:2018-10-10 16:54:45
8#
KevinChen 发表于 2018-10-10 15:51
对,toJSON和fromJSON具体的使用方法,我发API链接给您参考:

http://help.grapecity.com/spread/Spread ...

还有个问题。对于导入 Excel 文件,我是先初始化一个 spread 实例对象建立一个空的电子表格,我可以根据实例对象去操作这个空的表格,问题是在导入新的电子表格之后我怎么去操作导入进来的这个新的电子表格呢?比如给导入进来的这个新的表格设置名字和冻结首行,我现在找不到新表格的实例对象,导入之前创建的实例对象只能操作之前的那个空的表格。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-10-10 17:31:59
9#
您新表格如果已经渲染到页面了,可以用

var spread = GC.Spread.Sheets.findControl(document.getElementById("ss"));

这句代码来找到指定的spread实例。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-10-10 17:49:07
10#
对于上边那个数组对象导出Excel不显示的方法,

由于Spread JS导出Excel的原生实现并没有处理这种情况,

所以在数据导出前您这边对绑定的dataSource得先一步处理一下,

将数组实例转为字符串,然后再执行导出操作。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部