保存在Excel文件中的C#dynamic更改variablestypes

我使用Excel库将Dictionary<string, List<string>>转换为excel文件。 字典中的值保存为string,但实际上可以是双精度或string。 假设myDic是一个示例字典。 这是例如myDic [0]:

 [0] "\"Nm\""string [1] "1,0" string [2] "2,0" string [3] "3,2" string [4] "0,0" string [5] "0,0" string [6] "0,0" string [7] "0,0" string [8] "0,0" string [9] "0,0" string [10] "0,0" string 

虽然保存到Excel我想要将值转换为数字,如果他们实际上是数字。 我用这个方法,但似乎是非常错误的:

 try { row.CreateCell(j).SetCellValue(Double.Parse(cellValue)); } catch (Exception e) { row.CreateCell(j).SetCellValue(cellValue); } 

这是非常缓慢的,因为它在大多数单元上抛出exception。 此外,double值设置错误,我认为这是因为我的数字(德文数字)逗号例如1,0保存为10。

所以似乎有两个问题。 第一:如何dynamic和正确地转换单元格值的types。 第二:如何用逗号正确保存数字。

有人可以帮忙吗?

要testing一个string是否可以转换为double,请使用Double.TryParse

 double d; if(Double.TryParse(cellValue, out d)) row.CreateCell(j).SetCellValue(d); else row.CreateCell(j).SetCellValue(cellValue); 

这样,parsing失败时就不会发生exception。 相反, TryParse只是返回false让你跳进else分支。

要正确处理逗号和点,可以使用文化上意识到的TryParse的重载:

 Double.TryParse(cellValue, NumberStyles.Any, new CultureInfo("de-DE"), out d)