2015-02-24 16 views
10

Ho scritto un programma C# per creare un foglio di calcolo Excel. Il foglio ha più colonne. Voglio formattare UNA delle colonne.Formattazione di una colonna con Libreria EPPLUS Excel

aFile = new FileInfo(excelDocName); // excelDocName is a string 
ExcelPackage pck = new ExcelPackage(aFile); 
var ws = pck.Workbook.Worksheets.Add("Content"); 
ws.View.ShowGridLines = true; 
ws.Cells["B:B"].Style.Numberformat.Format = "0.00"; 
ws.Cells[1, 1].Value = "AA"; 
ws.Cells[1, 2].Value = "BB"; 
ws.Cells[1, 3].Value = "CC"; 
ws.Cells[1, 4].Value = "DD"; 
for (int row = 2; row <= 10; ++row) 
    for (int col = 1; col <= 4; ++col) 
    { 
    ws.Cells[row, col].Value = row * col; 
    } 
ws.Row(1).Style.Font.Bold = true; 
pck.Save(); 

Il problema è, mentre è formattazione della colonna corretta, è anche formattazione altre colonne con il formato e non solo la colonna ho specificato. Ho anche provato:

ws.Column(1).Style.Numberformat.Format = "0.00"; 

Si tratta di un bug o mi sto perdendo qualcosa?

+0

hmm, non riesco a vedere niente di sbagliato con il selettori. Stai usando un modello giusto? È possibile che il modello stesso sia formattato in modo errato? O il formato che stai impostando potrebbe essere quello predefinito per i numeri? Scusa Non mi è di grande aiuto – astian

+0

Non sto usando un modello. Sapevo che avrei potuto usarne uno. Posso guardare in questo.Grazie – elbillaf

risposta

15

Stai aprendo un file esistente? Potrebbe avere un formato già applicato alle altre colonne prima di aprirlo. O un modello come ha detto astian.

Cancella tutta la formattazione nel caso in cui in questo modo:

ws.Cells["A:D"].Style.Numberformat.Format = null; 
ws.Cells["B:B"].Style.Numberformat.Format = "0.00"; 

unit test completo in EPPlus 4.0.3:

[TestMethod] 
public void Format_Single_Column_Test() 
{ 
    //http://stackoverflow.com/questions/28698226/formatting-a-column-with-epplus-excel-library 
    var excelDocName = @"c:\temp\temp.xlsx"; 
    var aFile = new FileInfo(excelDocName); // excelDocName is a string 

    if (aFile.Exists) 
     aFile.Delete(); 

    ExcelPackage pck = new ExcelPackage(aFile); 
    var ws = pck.Workbook.Worksheets.Add("Content"); 
    ws.View.ShowGridLines = true; 
    ws.Cells["A:D"].Style.Numberformat.Format = null; 
    ws.Cells["B:B"].Style.Numberformat.Format = "0.00"; 
    ws.Cells[1, 1].Value = "AA"; 
    ws.Cells[1, 2].Value = "BB"; 
    ws.Cells[1, 3].Value = "CC"; 
    ws.Cells[1, 4].Value = "DD"; 
    for (int row = 2; row <= 10; ++row) 
     for (int col = 1; col <= 4; ++col) 
     { 
      ws.Cells[row, col].Value = row*col; 
     } 
    ws.Row(1).Style.Font.Bold = true; 
    pck.Save(); 
} 
+0

Sto creando il foglio di calcolo da zero senza un modello. Risulta che è sufficiente per me formattare solo alcune delle colonne. Non mi piace, perché ancora non capisco perché, tranne che questo potrebbe essere un bug. Non ho intenzione di giocare con esso ora che funziona. Continuerò a tenere questo in mente, che posso impostare il formato su null. Grazie – elbillaf

+0

@elbillaf Quale versione di EPPlus stai usando? Ho provato il test unità aggiunto sopra nella versione 4.0.3. – Ernie

+0

Versione ... 4.0.3 – elbillaf

Problemi correlati