2010-10-29 152 views
2

我试图在Excel中格式化单元格为货币格式。于是我去到Excel中,记录了我的一个普通细胞转化为货币格式宏,看看VB脚本,并看到它的输出如下:Excel Interop货币格式

的NumberFormat =“$#,## 0.00”

所以我采取这种格式,并将其粘贴到我的代码,它的作品的程度,即时获取货币字符之前,我的Excel表中的值。然而,单元格的格式仍然是一个数字,excel在单元格的左下方放置了一个绿色的小三角形,告诉我格式不正确(它是,它应该是货币,但是它的编号是数字)有没有什么办法在C#中实际设置单元格为“货币”格式?

感谢

回答

0

不知道我理解你的问题:
在Excel中,包括货币,整数和日期/时间的所有数值都举行浮点双打。值的格式只控制它在呈现(可见)层中的呈现方式。
绿色三角形测试不包括格式测试。
问题是您正在创建文本值而不是数值?

+0

没有值设置单元格是数字。为了更好地理解我的问题,如果你在Excel中右键点击一个单元格,然后点击格式单元格,有一个包含“数字”和“货币”和其他类型的不同格式的列表,有没有办法让我设置一个使用excel interop格式化为“货币”的单元格,我尝试使用NumberFormat来完成,但它似乎无法工作 – 2010-10-29 10:29:17

+0

您可以尝试将样式设置为Currency。
但我不认为它的数字格式是问题,因为除了检查存储为文本的数字之外,没有用于格式化的绿色三角形检查。
也许你应该发布你的代码。 – 2010-10-29 17:31:04

+0

顺便说一句,如果一个数字作为字符串/文本输入或格式化为文本,然后格式化为货币不会将其转换回数字。 – 2010-10-29 17:33:15

2

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

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

这解决了我的问题 – joab 2017-08-31 20:41:46

6

范围对象有一个“样式”属性......在智能感知元说,这是“返回一个对象,你可以使用”唯一,但你也可以只设置与该属性的风格。要获得内置的“货币”风格,请使用(例如)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"]; 

其实你可以将其设置为字符串“货币”,这可能是什么查尔斯建议。

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