C# Excel互操作货币格式

C# Excel互操作货币格式,c#,excel,interop,C#,Excel,Interop,我正在尝试将excel中的单元格格式化为货币格式。因此,我进入excel,记录我将普通单元格转换为货币格式的宏,查看vb脚本,看到它输出以下内容: NumberFormat=“$#,##0.00” 因此,我采用这种格式并将其粘贴到我的代码中,它的工作范围是,我在excel工作表中的值之前获取货币字符。但是,单元格的格式仍然是一个数字,excel在单元格的左下角放置了一个小绿色三角形,告诉我格式不正确(它是这样的,因为它应该是货币,但它设置为数字)。在c#中有没有办法将单元格设置为“货币”格式 谢

我正在尝试将excel中的单元格格式化为货币格式。因此,我进入excel,记录我将普通单元格转换为货币格式的宏,查看vb脚本,看到它输出以下内容:

NumberFormat=“$#,##0.00”

因此,我采用这种格式并将其粘贴到我的代码中,它的工作范围是,我在excel工作表中的值之前获取货币字符。但是,单元格的格式仍然是一个数字,excel在单元格的左下角放置了一个小绿色三角形,告诉我格式不正确(它是这样的,因为它应该是货币,但它设置为数字)。在c#中有没有办法将单元格设置为“货币”格式


谢谢

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

好的,我尝试了许多这种代码,发现在任何语言/区域设置下,它都比其他代码更有效

numberFormat = @"_-[$$-409]* #,##0.00_ ;_-[$$-409]* -#,##0.00 ;_-[$$-409]* ""-""??_ ;_-@_ ";
范围对象具有“样式”属性。。。IntelisSense元数据表示它“返回一个您可以使用的对象”,但您也可以使用该属性设置样式。要获取内置的“货币”样式,请使用(例如)工作簿对象的“样式”属性

例如:

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";

否我设置单元格的值是数值。为了更好地理解我的问题,如果右键单击excel中的某个单元格,然后单击“格式单元格”,则会出现一个包含“数字”、“货币”和其他类型的不同格式列表,我是否可以使用excel互操作将单元格格式设置为“货币”,我试着用NumberFormat来做这件事,但它似乎不起作用。你可以尝试将样式设置为货币。
但我认为这不是数字格式的问题,因为除了检查以文本形式存储的数字之外,没有绿色三角形的格式检查。
也许你应该发布你的代码。顺便说一句,如果数字输入为字符串/文本或格式化为文本,则随后将其格式化为货币不会将其转换回数字。