Excel对于从Javascript导出的带小数点的值的行为不正确

Excel对于从Javascript导出的带小数点的值的行为不正确,javascript,angularjs,excel,csv,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 ){

我正在使用
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));
            }
        }
    }
});
HelperServices.filter('customCurrencyFormat',函数($filter){
返回函数(val、cond、decimalPlaces){
if(decimalPlaces的类型=='undefined'| | decimalPlaces==null){
小数位数=2;
}
如果(val==“0”&&cond==“showZero”){
返回($filter('currency')(val,“,decimalPlaces));
}else if(val==0&&cond==“hideZero”){
返回null;
}否则{
if(val<0){
log($filter('currency')(val,“,decimalPlaces)).replace(“(”,“-”).replace(“),”);
返回($filter('currency')(val,“,decimalPlaces)).replace(“(”,“-”).replace(“),”);
}否则{
返回($filter('currency')(val,“,decimalPlaces));
}
}
}
});
此处
console.log
语句打印以下正确的输出:

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

值“-310.00”在excel中显示为“-310”(不带尾随零),即使值“-10978.00”也有尾随零,但与控制台上打印的值完全相同

我注意到的一件事是,如果“,”达到该值,它将在excel中正确打印。但是使用
angualrjs
currency filter时,“不适用于3位数的值。


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

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


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

类型编号已应用于angularjs代码中的网格列。我不确定这是什么意思,但我确信在保存
csv
文件时,此信息会丢失。它们是简单的文本文件,不能保存元数据,如数据类型。好的,我明白你的意思,保存到csv时信息会丢失。那么,为什么会有一些值与应用于它的筛选器一起出现?当读取文本文件(如
csv
)时,Excel将尝试猜测每个值的单元格类型,就像您手动输入一样。您可以告诉导入筛选器是否将特定列中的值视为标准值、文本或日期(使用“数据”功能区的“从文本添加”按钮),但很遗憾,您无法指定数字格式。我也有同样的问题。我们决定删除.00和.0。