2013-01-15 17 views
16

Opracowałem dodatek do Excela, dzięki czemu można wstawić pewne liczby z bazy danych MySQL do konkretnych komórek. Teraz próbowałem sformatować te komórki w walucie i mam z tym dwa problemy. 1. Podczas korzystania z formuły na sformatowanych komórkach, suma na przykład jest wyświetlana w następujący sposób: "353,2574 €". Co muszę zrobić, aby wyświetlić go w odpowiedni sposób? 2. Niektóre komórki są puste, ale muszą być również sformatowane w walucie. Używając tego samego formatu, którego użyłem do formuły sumy i wpisz coś, wyświetlany jest tylko numer. Bez "€", nic. Co to jest? I określono Excel.Range i wykorzystywane do formatowania tego zakresuFormatowanie komórek Excel (waluta)

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

Ale też próbował

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

Każdy pomysł ktoś?

Odpowiedz

15

Ten działa dla mnie. Mam aplikację testową Excel, która formatuje walutę na 2 miejsca dziesiętne z przecinkiem jako separatorem tysięcznym. Poniżej znajduje się aplikacja konsoli, która zapisuje dane w pliku Excel.

Upewnij się odwoływać 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; } 
    } 
} 

wyjście

enter image description here

Powiązane problemy