Excel Interop货币格式

时间:2010-10-29 06:52:35

标签: c# excel interop

我正在尝试将excel中的单元格格式化为货币格式。所以我进入excel,记录了一个将普通单元转换为货币格式的宏,看一下vb脚本,看看它输出如下:

NumberFormat =“$#,## 0.00”

所以我采用这种格式并将其粘贴到我的代码中,它的工作范围是我在excel表格中的值之前得到货币字符。但是,单元格的格式仍然是一个数字,并且excel在单元格的左下角放置一个小的绿色三角形,通知我格式不正确(它是cos,它应该是货币,但是它设置为数字)在c#中有没有办法将单元格实际设置为“货币”格式?

感谢

3 个答案:

答案 0 :(得分:7)

范围对象具有“样式”属性...智能元数据表示它只是“返回一个可以使用的对象”,但您也可以使用该属性设置样式。要获得内置的“货币”样式,请使用(例如)Workbook对象的“样式”属性。

示例:

using Excel = Microsoft.Office.Interop.Excel;

...

var excel = new Excel.Application();
var wb = excel.Workbooks.Add();
var sheet = (Excel.Worksheet)wb.Sheets[1];
((Excel.Range)sheet.Cells[3, 4]).Style = wb.Styles["Currency"];

事实上,您可以将其设置为字符串“Currency”,这可能是Charles所建议的。

((Excel.Range)sheet.Cells[3, 4]).Style = "Currency";

答案 1 :(得分:2)

好的我尝试了很多代码,我发现这比其他语言/区域设置更好。

numberFormat = @"_-[$$-409]* #,##0.00_ ;_-[$$-409]* -#,##0.00 ;_-[$$-409]* ""-""??_ ;_-@_ ";

答案 2 :(得分:0)

不确定我理解您的问题:
在Excel中,所有数字值(包括货币,整数和日期/时间)都保持为浮点双精度数。值的格式仅控制它在渲染(可见)图层中的显示方式。
绿色三角形测试不包括格式化测试。
问题是您要创建文本值而不是数值吗?