Установить формат валюты в Excel, используя C # - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть модель на C #

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

, и из базы данных я получаю List<Model>

Я хочу записать ValueMoneys в листе Excel в формате валюты и в зависимости от 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" ;
}

Проблема в том, чтов 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 голосов
/ 21 ноября 2018

Код локали для доллара США составляет [$$-en-US], а для бразильского реала R $ - [$R$-pt-BR].Например:

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

Коды локалей можно найти, задав символ в разделе «Валюта» диалогового окна «Ячейки формата Excel», а затем проверив соответствующий формат числа в разделе «Пользовательский» того же диалогового окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...