找回密码
 立即注册

QQ登录

只需一步,快速开始

Melody

中级会员

29

主题

63

帖子

591

积分

中级会员

积分
591

微信认证勋章

Melody
中级会员   /  发表于:2020-11-5 11:32  /   查看:2000  /  回复:1
        var sheet = spread.getActiveSheet();
        const dataSource = [{
                'A': '1.2586105847E8',
                'B': '-1.63E7'
        }];
        sheet.setDataSource(dataSource);
        let style = new GC.Spread.Sheets.Style();
        // #,##0.00; > 0格式  [Red]#,##0.00; < 0的格式
        style.formatter = '#,##0.00;[Red]#,##0.00;';
        sheet.setStyle(-1, 0, style);
        sheet.setStyle(-1, 1, style);
        spread.resumePaint();
导出
var json = spread.toJSON({includeBindingSource: true, saveAsView: true});
               
[url=]console.log(JSON.stringify(json));[/url]



ZR$1B{WN4ELQY@LUR71_RL4.png
DTIELDG4B2WD6J3SL30(5]6.png

demo.zip

2.59 KB, 下载次数: 20

1 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-5 16:40:05
沙发
本帖最后由 ClarkPan 于 2020-11-5 16:43 编辑

您好:
问题出在datasource上,datasource中的类型代表了数据的类型。
您的datasource中输入的是字符串,所以SpreadJS会将数据类型设置为字符串。
这样导出Excel的时候,Excel会将字符串类型的数据当做文本处理,而文本会导致上面设置的单元格格式失效,也就导致了您的问题。
然而,SpreadJS本身的formatter比Excel容错率要高一些,不会因为数据是字符串就让formatter失效,所以在SpreadJS上可以给一个字符串类型的数据设置单元格格式。
如果您有导出的需求,建议您更改datasource为具体的数字,而不是文本。



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