我正在使用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
语句打印输出正确:
当我在excel中打开导出的csv
时,它显示如下:
值&#34; -310.00&#34;显示为&#34; -310&#34;在excel(没有尾随零)甚至价值&#34; -10,978.00&#34;尾随零,但它与在控制台上打印的完全相同。
我注意到的一件事是,如果&#34;,&#34;得出它在excel中正确打印的值。但使用angualrjs
货币过滤器&#34;,&#34;不是3位数值。
为什么excel会为某些值删除尾随零而不删除其他一些值?
答案 0 :(得分:0)
Excel尝试为您猜测最合适的数字格式。如果您在Excel中手动输入1.0
,它将显示为1
(因为正在使用Excel的全部“标准”格式)。如果您输入1,000.0
,它将显示为1,000.00
(因为Excel切换为“数字”格式,这是保持千位分隔符可见所必需的。它还默认为两位小数。)
在这两种情况下,数字都存储正确 - 只需将“数字”类型分配给整个列。