datatable excelHtml5 自定义列格式(百分比保留两位小数)

概述

使用dataTable的excelHhtml5按钮插件做导出excel时,需要自定义数据格式,官方提供了67种数据格式可以选用,详见:https://datatables.net/reference/button/excelHtml5,但如果都不符合业务要求,则需要自定义数据格式,比如百分比保留两位小数,就需要修改buttons.html5.js源码,本文选用DataTables-1.10.15版本包里的buttons.html5.js,并以增加百分比保留两位小数为例来说明。

1.源码修改位置

1.1 第493行_createNode方法增加 数据==0时依旧显示的判断

function _createNode( doc, nodeName, opts ) {
    var tempNode = doc.createElement( nodeName );

    if ( opts ) {
        if ( opts.attr ) {
            $(tempNode).attr( opts.attr );
        }

        if( opts.children ) {
            $.each( opts.children, function ( key, value ) {
                tempNode.appendChild( value );
            });
        }
        //增加text==0的情况,否则如果数据==0时会不显示
        if( opts.text || opts.text == 0) {
            tempNode.appendChild( doc.createTextNode( opts.text ) );
        }
    }

    return tempNode;
}

1.2 第613行 620行增加数据格式

//这里数字+1 由6改为7
'<numFmts count="7">'+
    '<numFmt numFmtId="164" formatCode="#,##0.00_-\ [$$-45C]"/>'+
    '<numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/>'+
    '<numFmt numFmtId="166" formatCode="[$€-2]\ #,##0.00"/>'+
    '<numFmt numFmtId="167" formatCode="0.0%"/>'+
    '<numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/>'+
    '<numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/>'+
    //增加两位小数百分比格式format
    '<numFmt numFmtId="170" formatCode="0.00%"/>'+
'</numFmts>'

1.3 第705行 785行增加格式种类

//这里数字+1 由67改为68
'<cellXfs count="68">'+
......
//这里numFmtId对应上面添加的numFmtId,其他与numFmtId=164保留一位小数百分比格式一致
+ '<xf numFmtId="170" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+

1.5 第802行增加百分比两位小数匹配正则

//match匹配正则,style匹配67(官方提供从0-66共67种格式,新增的数字从67开始,不过style好像没起作用)
{ match: /^\-?\d+\.\d{2}%$/,    style: 67, fmt: function (d) { return d/100; } }, 

2.代码引用

buttons: [{
   extend: 'excelHtml5',
   text: '导出(按钮标题)',
   title: 'excel标题',
   className: 'btn btn-primary',
   customize: function ( xlsx ) {
       var sheet = xlsx.xl.worksheets['sheet1.xml'];
       //这里表示第E列所有数据使用第67种数据格式(新增的那种格式)
       $('row c[r^="E"]', sheet).attr( 's', '67' );
   },
}],

3.扩展

如果想导出excel时使用更多的数据格式,可参考https://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx 定制特殊格式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值