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

最佳答案

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

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

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

10-06 12:19
查看更多