对于具有从Javascript导出的小数位的值,Excel表现不正常

时间:2015-10-30 08:04:24

标签: javascript angularjs excel csv

我正在使用angular-ui-grid并将其导出到csv功能。在csv文件中数据正常。我在数值数据上使用了下面的过滤函数。

HelperServices.filter('customCurrencyFormat',function($filter){
    return function(val, cond , decimalPlaces){

        if(typeof decimalPlaces =='undefined' || decimalPlaces ==null ){
            decimalPlaces = 2;
        }

        if(val == "0" && cond == "showZero"){
            return ($filter('currency')(val, "", decimalPlaces));
        }else if(val == 0 && cond == "hideZero"){
            return null;
        }else{
            if(val < 0){
                console.log(($filter('currency')(val, "", decimalPlaces)).replace("(", "-").replace(")", ""));
                return ($filter('currency')(val, "", decimalPlaces)).replace("(", "-").replace(")", "");
            }else{
                return ($filter('currency')(val, "", decimalPlaces));
            }
        }
    }
});

这里console.log语句打印输出正确:

values on console

当我在excel中打开导出的csv时,它显示如下:

values in excel

值&#34; -310.00&#34;显示为&#34; -310&#34;在excel(没有尾随零)甚至价值&#34; -10,978.00&#34;尾随零,但它与在控制台上打印的完全相同。

我注意到的一件事是,如果&#34;,&#34;得出它在excel中正确打印的值。但使用angualrjs货币过滤器&#34;,&#34;不是3位数值。

为什么excel会为某些值删除尾随零而不删除其他一些值?

1 个答案:

答案 0 :(得分:0)

Excel尝试为您猜测最合适的数字格式。如果您在Excel中手动输入1.0,它将显示为1(因为正在使用Excel的全部“标准”格式)。如果您输入1,000.0,它将显示为1,000.00(因为Excel切换为“数字”格式,这是保持千位分隔符可见所必需的。它还默认为两位小数。)

在这两种情况下,数字都存储正确 - 只需将“数字”类型分配给整个列。