在C#中使用Excel双值

我试图从Excel中获取双重值到我的C#项目。 但是,当我尝试时,Visual Studio会自动擦除逗号/句点,并在没有它们的情况下显示数字。

例如:

Excel:192,168或192.168

C#:192168,00

我怎样才能防止这种情况发生?

Excel获取值代码:

for (int i = 0; i < dataGridView1.ColumnCount; i++) { for (int j = 0; j < dataGridView1.Rows.Count - 1; j++) { tsp.addArray(Convert.ToDouble(ds.Tables["Deneme"].Rows[i][j].ToString()), i, j); } } 

replace是我猜的好办法。

就这样试试。

 string oldString = ds.Tables["Deneme"].Rows[i][j].ToString(); // Old string in addArray. string convertedString = oldString.Replace(".",","); // Replacer for dots. double convertedDouble = Convert.ToDouble(convertedString); // Convert double now. 

我认为你的文化是tr-TR ,这就是为什么你的NumberDecimalSeparator,而不是.

这就是为什么当你在你的程序中写192.168的时候,它读的是一万九千二千…但是当你写192,168 一百九十二…

如果你的Excel单元格像192,168 ,没有问题。 Convert.ToDouble完全按照你的想法工作。

 string s = "192,168"; double d = Convert.ToDouble(s, CultureInfo.GetCultureInfo("tr-TR")); Console.WriteLine(d); //192,168 

但是,如果你的Excel单元格像192.168 ,那么你需要使用n0格式;

 string s = "192.168"; double d = 0; if(s.Contains(".")) { d = Convert.ToDouble(s, CultureInfo.GetCultureInfo("tr-TR")); } Console.WriteLine(d.ToString("n0")); //192.168