2015-12-10 7 views
0

У меня очень странная проблема:я запятая Seperator ИИН первенствует ячейку как точки в C#

для чтения первенствовать я использую пакет NGET NPOI и мой код

HttpPostedFileBase file = Request.Files[0]; 


      string fileName = file.FileName; 
      Stream filestream = file.InputStream; 
      string fileExtension = System.IO.Path.GetExtension(Request.Files[0].FileName); 

      if (fileExtension == ".xls" || fileExtension == ".xlsx") 
      { 


    HSSFWorkbook hssfwb; 

    hssfwb= new HSSFWorkbook(filestream); 


    ISheet sheet = hssfwb.GetSheetAt(0); 
    for (int row = 1; row <= sheet.LastRowNum; row++) 
    { 
     if (sheet.GetRow(row) != null) //null is when the row only contains empty cells 
     { 
      Cordinates cord = new Cordinates(); 
      cord.x =sheet.GetRow(row).GetCell(1).StringCellValue; 
      cord.y = sheet.GetRow(row).GetCell(2).ToString(); 
      cord.h = sheet.GetRow(row).GetCell(3).ToString(); 
      lstCordinatestoReturn.Add(cord); 

     } 
    } 

ТАК самое странное является то, что значения в моих клеток это 123233 13333 (только цифры и запятая) и независимо от того, что ячейка отформатирована как текст ячейки - Я всегда получаю значение с точки

cord.y = sheet.GetRow(row).GetCell(2).ToString(); // theresult will ve 123.2333 

и даже первый дает исключение()

cord.x =sheet.GetRow(row).GetCell(1).StringCellValue; // gives an exception : Cannot get a text value from a numeric cell 

ответ

1
cord.y = sheet.GetRow(row).GetCell(2).ToString(); 

Это культура нечувствительно преобразование так будет преобразовывать двойное значение в строку с десятичной точкой.

Необходимо указать культуру в вызове ToString, чтобы получить требуемый формат.