2013-01-15 14 views
16

Ich habe ein Add-In für Excel entwickelt, damit Sie einige Zahlen aus einer MySQL-Datenbank in bestimmte Zellen einfügen können. Jetzt habe ich versucht, diese Zellen zu formatieren, und ich habe zwei Probleme damit. 1. Wenn eine Formel für formatierte Zellen verwendet wird, wird die Summe zum Beispiel wie folgt angezeigt: "353,2574 €". Was muss ich tun, um es angemessen anzuzeigen? 2. Einige Zellen sind leer, müssen aber auch in Währung formatiert werden. Wenn ich dasselbe Format verwende, das ich für die Summenformel verwendet habe, und etwas eintippe, wird nur die Zahl angezeigt. Kein "€", nichts. Was ist das? angegeben ich ein Excel.Range und verwendet, um dieses den BereichFormatieren von Excel-Zellen (Währung)

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

Aber ich habe auch versucht,

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

Jede jemand Idee zu formatieren?

Antwort

15

Dieser funktioniert für mich. Ich habe eine Excel-Test-App, die die Währung in 2 Dezimalstellen mit Komma als Tausendertrennzeichen formatiert. Unten ist die Konsolenanwendung, die Daten in die Excel-Datei schreibt.

Achten Sie darauf, Sie haben Microsoft.Office.Interop.Excel referenzierte dll

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; } 
    } 
} 

Der Ausgang

enter image description here