Javascript 导出的Excel中的数据格式错误

Javascript 导出的Excel中的数据格式错误,javascript,excel,formatting,js-xlsx,sheetjs,Javascript,Excel,Formatting,Js Xlsx,Sheetjs,我在这里请求帮助解决这个问题。我已经放了 关键是我想使用非英语数据格式(日期和数字)。当我导出到XLSX文件时,库处理不正确,并且导出的Excel中表示的信息错误。我没有所有信息,因此我在暗中瞎猜x2: 1) 如果日期作为字符串返回,您可以尝试使用left、right、mid、len等来解析它,然后使用date函数重新排列它 2) 可以更改Excel的基本语言,其效果是更改所使用的日期格式。您可以更改为Excel的某个版本,在该版本中进行处理,然后转换回原始语言,该语言将转换文件 再说一次,由于

我在这里请求帮助解决这个问题。我已经放了


关键是我想使用非英语数据格式(日期和数字)。当我导出到XLSX文件时,库处理不正确,并且导出的Excel中表示的信息错误。

我没有所有信息,因此我在暗中瞎猜x2:

1) 如果日期作为字符串返回,您可以尝试使用left、right、mid、len等来解析它,然后使用date函数重新排列它

2) 可以更改Excel的基本语言,其效果是更改所使用的日期格式。您可以更改为Excel的某个版本,在该版本中进行处理,然后转换回原始语言,该语言将转换文件


再说一次,由于缺乏信息,也缺乏这样做的业务需求,我无法给出更好的响应

我的解决方案会有所不同

在代码中构建自定义excel格式。 附件是一个例子,我认为你应该能够改进

这是对
exportToXls
函数的简单重写:

    function exportToXls() {
        var wb = XLSX.utils.book_new();
        var ws = XLSX.utils.json_to_sheet(vm.list, {header: ["date", "number"], cellDates: true});

        // Headers
        ws['A1'].v='Fecha';
        ws['B1'].v='N.º';

        // Data
        for(var i = 0; i < vm.list.length; ++i) {
            ws[`A${i+2}`].z = 'd/m/yy';
        }
        XLSX.utils.book_append_sheet(wb, ws, 'Somename');
        XLSX.writeFile( wb, 'Table.xlsx' );
    }
函数exportToXls(){
var wb=XLSX.utils.book_new();
var ws=XLSX.utils.json_to_sheet(vm.list,{header:[“date”,“number”],cellDates:true});
//标题
ws['A1'].v='Fecha';
ws['B1'].v='N.º';
//资料
对于(变量i=0;i
$$hashkey
是由于角度(使用它扫描更改)引起的。如果要使用单独的方法或变量来注入数据,如下面的示例所示,
$$hashkey
将不存在


它在这里起作用了。

我想在这里你可以找到很多例子和解释,即使这个思路已经很老了:你应该始终将数据存储和数据表示分开<代码>HTML
用于数据显示,而不是数据存储。由于您使用的是
angular-locale_es-es.min.js
,因此它是针对西班牙的一种特殊数据表示。
Excel
导出应始终从数据存储中获取数据,而不是从数据表示中获取数据。所以
XLSX.utils.table_to_book
(将
HTML
转换为
Excel
)根本不是一个好主意。正如您所看到的,
HTML
没有明确的日期和数字类型。因此,
2/1/19
应该是什么日期(MDY还是DMY?)以及
13/1/19
是否是一个日期完全不清楚。此外,还不清楚
1.234
应该是什么数字(是
十进制分隔符还是千位分隔符?)以及
123,4
应该是什么数字(是
十进制分隔符还是千位分隔符?)。由于不清楚,默认值是英语US:日期是
MDY
,数字是十进制分隔符,
是千位分隔符。David,我需要反向过程:从HTML表格到Excel文件。我刚刚测试了@ShaharHadas的解决方案,它是有效的,所以请接受他的答案。这个问题已经解决了,你所说的不起作用或者它不是一个好的解决方案。通过我写的链接,您已经有足够的信息来获取此问题。此代码有效,它以正确的格式将日期反向导出为
MM-DD-YYYY
。这是正确的答案,我不鼓励进一步讨论这个话题。这个代码有效吗?那么表头名称呢?第三列(“$$hashKey”)修正了答案。头-简单代码覆盖:)$$hashkey是由于角度。所以你不能使用angular使用的相同数据变量。很抱歉挑三拣四,但这个解决方案不是我想要的。我需要一个自动的过程,从表中获取数据,并且不需要补丁或半途而废的即兴创作。该库无法真正了解日期的编码样式-我甚至在用不同的字符集表示日期/时间时遇到了确切的问题。正如您可能已经看到的,该库甚至没有局部性选项(因为有很多),而excel在这方面已经做得相当好了,所以我假设大多数人只是从代码中注入数据,并像我在函数中显示的那样自动设置格式。