使用C#将Excel单元格的值从文本转换为数字

我正在使用Windows应用程序。 在那个应用程序中,我将DataGrid导出到Excel成功…现在的问题是,当我从网格导出到Excel工作表时,单元格的值在Excel工作表的左上angular有一些绿色标记…我想这是types投射的问题。 我该如何避免这个问题….以及如何将文本的单元格值更改为数字…(即)转换为数字….

任何人都可以告诉我这个问题的解决scheme吗?

提前致谢

我的代码格式化该Excel表格的某些范围值,

wksheet.Range[GetRanges[0].ToString(), GetRanges[GetRanges.Count-2].ToString()].Merge(); wksheet.get_Range(GetRanges[0].ToString(), GetRanges[GetRanges.Count-].ToString()).Interior.Color = Color.FromArgb(192, 0, 0); 

目前我还没有Windows机器可以testing,但也许你会想尝试更改单元格格式,例如:

 my_range.NumberFormat = "0.0"; // change number of decimal places as needed 

以下是Microsoft的完整示例: 如何从Microsoft Visual C#.NET自动化Microsoft Excel 。

以下例程将dynamic地从文本文件中的数据(文本和数字)填充电子表格。

kicker使用一个对象数组来设置值。

 StreamReader STRead; String[] STCells; object[] cellData; int temp; Excel.Range tempRange; for (int i = 0; i < FileList.Length; i++) { STRead = FileList[i].OpenText(); int j = 0; while (!STRead.EndOfStream) { STCells = STRead.ReadLine().Split(','); cellData = new object[STCells.Length]; for (int k = 0; k < STCells.Length; k++) { if (Int32.TryParse(STCells[k], out temp)) cellData[k] = temp; else cellData[k] = STCells[k]; } tempRange = sheetList[i].get_Range(ReturnCellID(j, 0), ReturnCellID(j, STCells.Length - 1)); j++; tempRange.Value2 = cellData; } STRead.Close(); } 

我有一个包含常规数字和百分比(从Crystal报表中导出string的结果)的Excel工作表的问题。

要立即改变它们,我做了一个这样的循环:

 //example range Excel.Range rng = mWorkSheet.get_Range("A1", "H25"); foreach (Excel.Range range in rng) { if (range.Value != null) { int number; bool isNumber = int.TryParse(range.Value.ToString().Trim(), out number); if (isNumber) { range.NumberFormat = "#,##0"; range.Value = number; } else { //the percent values were decimals with commas in the string string temp = range.Value.ToString(); temp = temp.Replace(",", "."); range.Value = temp; } } } 

结果是百分比string和数字都被转换成正确的Excel格式。

将值分配给单元格时,首先尝试获取2维数组中的所有值,然后将该数组分配给Range。 这种方式将是非常快,我也猜测单元格中的值将是数字。 试试吧…希望它应该工作

使用Excel Jet Cell .NET组件将单元格的值从文本更改为数字很容易。

 Cell["A1"].Style.StringFormat = "##.#"; // or "0.0" same as in MS Excel