我有一个 C# 模型
public class Model
{
public int CurrencyId{ get; set; }
public decimal? ValueMoney{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并从数据库我收到 List<Model>
我想在 Excel 工作表中以货币格式编写 ValueMoneys,根据 CurrencyId,它必须是美元 $ 或巴西雷亚尔 R$。
我正在使用 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" ;
}
Run Code Online (Sandbox Code Playgroud)
问题是在 Excel 中,它向我显示了它是一个字符串并要求更改为数字格式的警告。
我试图使用
xlWorkSheet.Cells[i, 1] = data[i].ValueMoney
((Range)xlWorkSheet.Cells[i, 1]).NumberFormat = "$ #,##0.00"
Run Code Online (Sandbox Code Playgroud)
但自从我在巴西以来,它总是显示 R$。提前感谢您的帮助。
[更新] 它有效
xlWorkSheet.Cells[i, 1] = data[i].ValueMoney;
((Range)xlWorkSheet.Cells[i, 1]).NumberFormat = data[i].CurrencyId == 2 ? "$ #,##0.00" : "[$$-409] #,##0.00";
Run Code Online (Sandbox Code Playgroud)
美元 $ $ 的区域设置代码是[$$-en-US],巴西雷亚尔 R$ 的区域设置代码是[$R$-pt-BR]。例如 :
.NumberFormat = "[$$-en-US] #,##0.00";
Run Code Online (Sandbox Code Playgroud)
通过在“Excel 格式单元格”对话框的“货币”部分中设置符号,然后在同一对话框的“自定义”部分中检查相应的数字格式,可以找到区域设置代码。
| 归档时间: |
|
| 查看次数: |
6305 次 |
| 最近记录: |