我把逗号分隔符iin excel cell作为c#中的点

时间:2015-12-10 10:20:08

标签: c# excel hssf

我有一个非常奇怪的问题:

用于阅读excel我使用NPOI nget包,我的代码是

 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);

        }
    }

最奇怪的是,我的单元格中的值是123,233 13,333 (只有数字和逗号)并且无论单元格被格式化为文本单元格 - 我总是通过点

获取值
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 个答案:

答案 0 :(得分:1)

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

这是一种不区分文化的转换,因此会将double值转换为带小数点的字符串。

您需要在ToString调用中指定文化才能获得所需的格式。