Javascript JQuery数据表Excel导出编号格式

Javascript JQuery数据表Excel导出编号格式,javascript,jquery,excel,datatables,number-formatting,Javascript,Jquery,Excel,Datatables,Number Formatting,我们有一个带有excel导出的JQuery数据表,但无法解决数字问题。 数字以匈牙利语格式显示在数据表中:5 5889906(空格是千位分隔符,逗号是小数点)。 现在我们需要在excel中以数字的形式显示数据,但这并非每次都有效。在excel设置中,千位分隔符是空白,小数点是逗号 数据表: Excel中的结果(下一个可以,上一个是字符串): 守则: var buttonCommon = { exportOptions: { format: {

我们有一个带有excel导出的JQuery数据表,但无法解决数字问题。 数字以匈牙利语格式显示在数据表中:5 5889906(空格是千位分隔符,逗号是小数点)。 现在我们需要在excel中以数字的形式显示数据,但这并非每次都有效。在excel设置中,千位分隔符是空白,小数点是逗号

数据表:

Excel中的结果(下一个可以,上一个是字符串):

守则:

var buttonCommon = {
    exportOptions: {
        format: {
            body: function ( data, row, column, node ) {
                return column === 6 || column === 8 || column === 9 || column === 10 || column === 11 || column === 12 || column === 13
                ? data.replace(',', '.').replace(' ', ',') : data;
            }
        }
    }
};

var table = $('#talaltszamlak').DataTable({
    dom: 'Blfrtip',
    buttons: [
        $.extend( true, {}, buttonCommon, {
            extend: 'excelHtml5'
        } ),
    ],
    pageLength: 50,
    "order": [[ 3, "asc" ]],
    language: {
        url: '//cdn.datatables.net/plug-ins/1.10.22/i18n/Hungarian.json'
    },
});

谢谢大家!

下面是一个示例,您可以提供自己的自定义Excel数字格式

在这种情况下,Excel格式字符串为:

#,##0.0##
因此,我们将得到最多3个小数位(至少1个小数位)

测试数据:


名称
数量
老虎尼克松123,45
加勒特温特斯567892
阿什顿Cox1 233 445,1
具有自定义代码的数据表:

$(文档).ready(函数(){
变量表=$(“#示例”)。数据表({
dom:“Brftip”,
按钮:[
{
扩展:“excelHtml5”,
文本:“Excel”,
出口选择:{
格式:{
正文:函数(数据、行、列、节点){
返回reformatNumber(数据、行、列、节点);
}
}
},
自定义:功能(xlsx){
addCustomNumberFormat(xlsx,#,#0.0##');
formatTargetColumn(xlsx,'B');//Excel列B
}
}
]
} );
} );
函数reformatNumber(数据、行、列、节点){
//将空格替换为零;将逗号替换为点。
如果(列==1){
var newData=data.replace(“,”,“).replaceAll(“,”);
返回新数据;
}否则{
返回数据;
}
}             
函数addCustomNumberFormat(xlsx,numberFormat){
//这将向Excel“样式”文档中添加新的自定义编号格式:
var numFmtsElement=xlsx.xl['styles.xml'].getElementsByTagName('numFmts')[0];
//假设已经存在6种自定义数字格式,下一个可用ID为176:
var numFmtElement='';
$(numFmtsElement).append(numFmtsElement);
$(numFmtsElement).attr(“count”,“7”);//递增计数
//现在添加一个新的“cellXfs”单元格格式设置程序,它使用我们新的数字格式(numFmt 176):
var celXfsElement=xlsx.xl['styles.xml'].getElementsByTagName('cellXfs');
var-cellStyle='';
//这将是第8个“xf”元素,因此当我们稍后使用它时,索引将为“7”:
$(celxSelement).append(cellStyle);
$(celXfsElement.attr(“count”,“69”);//递增计数
}
函数格式TargetColumn(xlsx,col){
var sheet=xlsx.xl.worksheets['sheet1.xml'];
//选择地址以字母prvoid开头的所有单元格
//在“col”中,为样式编号68添加样式属性:
$('row c[r^=“”+col+“]”,sheet.attr('s','68');
}
代码将新的数字格式记录添加到Excel样式XML表中;然后,它使用该记录创建一个新的单元格格式记录。最后,它定位Excel电子表格B列中的每个单元格,并应用单元格格式化程序

最终结果是数据表中显示的值如下所示:

1 233 445,1
1,233,445.1
将显示在Excel中,如下所示:

1 233 445,1
1,233,445.1

您可以使用所需的任何Excel数字格式字符串,而不是
,###0.0##

数据表提供的默认值预期正好有两位小数(或没有)。因此,小数点后1位的数字(有千位分隔符)在Excel中不会被赋予数字格式——它们将获得“通用”格式。您可以在导出过程中添加自定义样式,但这需要更多的工作https://cdn...在您的URL中,而不仅仅是
/…
。(2) 替换数千个分隔符的逻辑将只替换一个数千个分隔符。如果你有数以百万计的数字,你最终会得到一个格式错误的数字-因此请尝试
replaceAll()
。谢谢。使用替换是一个错误。工作很有魅力,非常感谢!只需要提高十进制数计数