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

时间:2010-09-30 07:22:30

标签: c# excel

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

有人可以告诉我这个问题的解决方案吗?

先谢谢

我为某些值范围格式化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);

5 个答案:

答案 0 :(得分:9)

我目前还没有要测试的Windows机器,但也许您可能想尝试更改单元格格式,例如:

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

以下是Microsoft的完整示例:How to automate Microsoft Excel from Microsoft Visual C#.NET

答案 1 :(得分:1)

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

踢球者正在使用对象数组来设置值。

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

答案 2 :(得分:1)

我遇到了包含常规数字和百分比(从Crystal Report导出字符串的结果)的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;
        }
    }
}

结果是百分比字符串和数字都转换为正确的Excel格式。

答案 3 :(得分:0)

将值分配给单元格时,请先尝试获取二维数组中的所有值,然后将数组指定给Range。这样它的速度非常快,而且我猜单元格中的值也是数字。尝试一下......希望它能够起作用

答案 4 :(得分:0)

使用Excel Jet Cell .NET component将单元格值从文本更改为数字。

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