在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