web-dev-qa-db-fra.com

Formatage des cellules Excel (devise)

J'ai développé un complément pour Excel afin que vous puissiez insérer des numéros d'une base de données MySQL dans des cellules spécifiques. Maintenant, j'ai essayé de formater ces cellules en devises et j'ai deux problèmes avec cela. 1. Lors de l'utilisation d'une formule sur des cellules formatées, la somme par exemple est affichée comme ceci: "353 2574 €". Que dois-je faire pour l'afficher de manière appropriée? 2. Certaines cellules sont vides mais doivent également être formatées en devise. Lorsque j'utilise le même format que j'ai utilisé pour la formule de somme et que je tape quelque chose, il n'y a que le nombre affiché. Pas de "€", rien. Qu'est-ce que c'est? J'ai spécifié un Excel.Range et l'ai utilisé pour formater la plage

sum.NumberFormat = "#.## €";

Mais j'ai aussi essayé

sum.NumberFormat = "0,00 €";
sum.NumberFormat = "#.##0,00 €";

Une idée quelqu'un?

18
soundslogic

Celui-ci fonctionne pour moi. J'ai une application de test Excel qui met en forme la devise en 2 décimales avec une virgule comme séparateur de milliers. Ci-dessous se trouve l'application console qui écrit des données sur un fichier Excel.

Assurez-vous d'avoir référencé la DLL Microsoft.Office.Interop.Excel

using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var bankAccounts = new List<Account> {
                new Account { ID = 345678, Balance = 541.27},
                new Account {ID = 1230221,Balance = -1237.44},
                new Account {ID = 346777,Balance = 3532574},
                new Account {ID = 235788,Balance = 1500.033333}
};
            DisplayInExcel(bankAccounts);
        }
        static void DisplayInExcel(IEnumerable<Account> accounts)
        {
            var excelApp = new Excel.Application { Visible = true };
            excelApp.Workbooks.Add();
            Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
            workSheet.Cells[1, "A"] = "ID Number";
            workSheet.Cells[1, "B"] = "Current Balance";
            var row = 1;
            foreach (var acct in accounts)
            {
                row++;
                workSheet.Cells[row, "A"] = acct.ID;
                workSheet.Cells[row, "B"] = acct.Balance;

            }
            workSheet.Range["B2", "B" + row].NumberFormat = "#,###.00 €";
            workSheet.Columns[1].AutoFit();
            workSheet.Columns[2].AutoFit();
        }
    }
    public class Account
    {
        public int ID { get; set; }
        public double Balance { get; set; }
    }
}

Le résultat

enter image description here

16
Jobert Enamno