2015-10-29 3 views
0

Попытка следующее:Как вставить двойной номер в Excel?

  string cellDataStr = row[col.ColumnName].ToString(); 
      double cellDataD = 0; 

      Cell cell = new Cell(); 

      if (double.TryParse(cellDataStr.Replace(',','.'), NumberStyles.Any, new NumberFormatInfo(), out cellDataD)) 
      { 
      // data was parsed as double; 
      cell.DataType = new EnumValue<CellValues>(CellValues.Number); 
      cell.CellValue = new CellValue(cellDataStr); 
      } 
      else 
      { 
      // data was not parsed as double 
      cell.DataType = CellValues.String; 
      cell.CellValue = new CellValue(cellDataStr); 
      } 

Где cellDataStr может быть 353126,00. Запятая - это десятичный разделитель.

Когда я открываю этот сгенерированный файл, Excel указывает, что «у нас возникла проблема с некоторым контентом, вы хотите, чтобы мы пытались восстановить столько, сколько мы можем?».

Все целые числа, такие как 1, 3254 и 8, являются точными. Но каждое число с десятичной точкой, например 15592,52, 0,0600000, -15000,00, имеет эту зеленую стрелку в ячейке, в которой сообщается, что число в ячейке сохраняется как текст или продолжается с апострофом.

Как вставить двойное значение в ячейку?

+0

вы ли попытаться использовать свойства текста вместо значения? – DieVeenman

ответ

0

магазин двойной как текст, а затем использовать:

range.NumberFormat = "0.0"; // согласно вашему требованию

+0

Как вводить номер в виде текста и говорить о том, что его встроенный текст помогает excel ** не ** хранить номер в виде текста? –

0

Возможно, по той же причине вы заменяете строку, чтобы изменить десятичный разделитель. Полученная таблица помечена текущей культурой потока, которая явно не соответствует вашим данным.

Вы записываете номер 353126,00 в лист, но его нельзя разобрать с использованием текущей культуры, поэтому это не число. Чтобы исправить это (проблема с содержимым) Excel меняет тип ячейки на текст. Теперь, когда Excel открыл файл, представление является специфичным для культуры, и он может видеть, что это номер, поэтому он предлагает вам эффективно отменить внесенные изменения. Кроме того, что она будет хранить его, используя текущую культуру так, чтобы исправить ...

изменение:

 cell.CellValue = new CellValue(cellDataStr); 

в

 cell.CellValue = new CellValue(cellDataD.ToString()); 
+0

Я пробовал это без везения :( – Jason94

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