2015-10-30 1 views
0

Я использую angular-ui-grid и его экспорт в функциональность csv. В csv данные файла поступают правильно. Я использую ниже функцию фильтра для числовых данных.Excel ведет себя неправильно для значений с десятичными знаками, экспортированными из Javascript

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

И когда я открываю на экспорт csv первенствует, он показывает, как это:

values in excel

Значение «-310.00» отображается как «-310» в excel (без конечных нулей) и даже значение «-10,978.00» имеет завершающие нули, но оно точно такое же, как и на консоли.

Одна вещь, которую я заметил, это то, что если «,» приходит к значению, оно правильно напечатано в excel. Но с angualrjs валютный фильтр «,» не подходит для трехзначных значений.

Почему excel удаляет конечные нули для некоторых значений и не удаляет какие-либо другие значения?

ответ

0

Excel пытается угадать наиболее подходящий формат чисел для вас. Если вы введете 1.0 в Excel вручную, оно будет отображаться как 1 (поскольку используется весь стандартный «Excel» формат Excel). Если вы введете 1,000.0, он будет отображаться как 1,000.00 (потому что Excel переключается на форматирование «Число», которое необходимо для отображения разделителей тысяч, а также по умолчанию равно двум десятичным разрядам).

В обоих случаях цифры хранятся правильно - просто присвойте тип «Число» всему столбцу.

+0

номер типа уже применяется к столбцу сетки в коде angularjs. – Valay

+0

Я не уверен, что вы подразумеваете под этим, но я уверен, что эта информация теряется при сохранении файла 'csv'. Это простые текстовые файлы, которые не могут сохранять метаданные, такие как типы данных. –

+0

Хорошо, я понял, что информация сохраняется при сохранении в csv. Тогда почему некоторые значения приходят с фильтром, примененным к нему? – Valay

Смежные вопросы