我在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";
答案 0 :(得分:2)
美元$的语言环境代码为[$$-en-US]
,巴西雷亚尔R $的语言环境代码为[$R$-pt-BR]
。例如:
.NumberFormat = "[$$-en-US] #,##0.00";
可以通过在“ Excel格式单元格”对话框的“货币”部分中设置“符号”,然后在同一对话框的“自定义”部分中检查相应的数字格式来找到语言环境代码。