如何使用C#更改Excel单元格的文本格式?

时间:2012-05-23 13:02:23

标签: c# excel

我目前正在编写一个应用程序(C#),根据其他报告在Excel文件中生成报告。

问题在于,一旦从某张纸上获得一个数字,并复制到另一张纸上,目标单元格格式不正确,并且该数字无法正确显示。

E.g : 
Number from source : 14.34 
Number on destination : 14.345661

如何格式化目标单元格以强制数字格式化与源单元格相同。

谢谢!

2 个答案:

答案 0 :(得分:4)

可以通过代码设置excel中给定单元格/范围的格式。

public void SetCustomFormat(string format, int r, int c)
{
    ((Excel.Range)xlWks.Cells[r, c]).NumberFormat = format;
}

在您的具体情况下,我相信您需要使用“#.00”或“#。##”格式

答案 1 :(得分:3)

这是我使用的一些代码的片段,向您展示格式化单元格的一般模式。显然,声明了一些变量,但它应该显示你需要的东西。

sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).Font.Bold = true;
sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).Interior.Color = Color.Silver.ToArgb();
sheet.get_Range("A" + CurrentRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
sheet.get_Range("A" + CompetencyStartRowIndex.ToString(), ColPrefix + CurrentRowIndex.ToString()).BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);

第一行,假设CurrentRowIndex = 1且ColPrefix =“B”,用结果值替换变量将转换为

sheet.get_Range("A1", "B1").Font.Bold = true;

无论如何,您要设置数字格式。 (即将..)

sheet.Cells[Row, Column].NumberFormat = "0.00"