2015-02-24 14 views
10

Ich schrieb ein C# -Programm, um eine Excel-Tabelle zu erstellen. Das Blatt hat mehrere Spalten. Ich möchte eine der Spalten formatieren.Formatieren einer Spalte mit EPPLUS Excel-Bibliothek

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(); 

Das Problem ist, während es die Spalte richtig die Formatierung, es auch andere Spalten mit dem Format Formatierung und nicht nur die Spalte I angegeben. ich auch versucht:

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

Ist das ein Bug oder bin ich etwas fehlt?

+0

hmm, ich kann nichts falsch mit dem sehen Selektoren. Sie verwenden eine Vorlage richtig? Ist es möglich, dass die Vorlage selbst falsch formatiert ist? Oder das Format, das Sie einstellen, könnte das Standardformat für Zahlen sein? Tut mir leid, ich bin keine große Hilfe – astian

+0

Ich benutze keine Vorlage. Wusste, dass ich einen benutzen könnte. Ich kann in das schauen. Thanks – elbillaf

Antwort

15

Öffnen Sie eine vorhandene Datei? Möglicherweise wird ein Format bereits auf die anderen Spalten angewendet, bevor Sie es öffnen. Oder eine Vorlage wie astian sagte.

Alle löschen die Formatierung nur für den Fall wie folgt aus:

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

Voll Unit-Test 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

Ich erstelle die Tabelle von Grund auf ohne Vorlage. Es stellt sich heraus, dass es für mich ausreicht, nur einige Spalten zu formatieren. Ich mag es nicht, weil ich immer noch nicht verstehe warum, außer dass das ein Fehler sein könnte. Ich werde jetzt nicht damit spielen, dass es funktioniert. Dennoch werde ich dies im Hinterkopf behalten, dass ich das Format auf null setzen kann. Danke – elbillaf

+0

@elbillaf Welche Version von EPPlus laufen Sie? Ich habe den zusätzlichen Komponententest oben in Version 4.0.3 versucht. – Ernie

+0

Version ... 4.0.3 – elbillaf