使用C#在Excel中设置货币格式

时间:2018-11-21 16:16:14

标签: c# excel

我在C#中有一个模型

    public class Model
    {
        public int CurrencyId{ get; set; }
        public decimal? ValueMoney{ get; set; }
    }

从数据库中,我收到了List<Model>

我想用货币格式在Excel工作表中编写ValueMoneys,并且根据CurrencyId,它必须是美元$或巴西雷亚尔。

我正在使用Microsoft.Office.Interop.Excel;

我的代码如下:

var data = GetValues().ToList();
Application xlApp = new Application();
Workbook xlWorkBook = null;
Worksheet xlWorkSheet = xlWorkBook.Worksheets[1];

for (int i = 1; i < data.count; i++){
     xlWorkSheet.Cells[i, 1] = data[i].ValueMoney!= null ? data[i].CurrencyId == 2 ? data[i].ValueMoney.Value.ToString("C", new CultureInfo("pt-BR")) : data[i].ValueMoney.Value.ToString("C", new CultureInfo("en-US")) : "";       
    ((Range)xlWorkSheet.Cells[i, 1]).Style = "Currency" ;
}

问题在于,在Excel中它向我显示警告,它是一个字符串,并要求更改为数字格式。

我正在尝试使用

xlWorkSheet.Cells[i, 1] = data[i].ValueMoney
((Range)xlWorkSheet.Cells[i, 1]).NumberFormat = "$ #,##0.00" 

但是由于我在巴西,它始终显示R $。 谢谢您的帮助。

[更新] 有效

xlWorkSheet.Cells[i, 1] = data[i].ValueMoney;
((Range)xlWorkSheet.Cells[i, 1]).NumberFormat = data[i].CurrencyId == 2 ? "$ #,##0.00" : "[$$-409] #,##0.00";

1 个答案:

答案 0 :(得分:2)

美元$的语言环境代码为[$$-en-US],巴西雷亚尔R $的语言环境代码为[$R$-pt-BR]。例如:

.NumberFormat = "[$$-en-US] #,##0.00";

可以通过在“ Excel格式单元格”对话框的“货币”部分中设置“符号”,然后在同一对话框的“自定义”部分中检查相应的数字格式来找到语言环境代码。