web-dev-qa-db-fra.com

Formatage d'une colonne avec la bibliothèque Excel EPPLUS

J'ai écrit un programme C # pour créer une feuille de calcul Excel. La feuille a plusieurs colonnes. Je souhaite formater UNE des colonnes.

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

Le problème est que, bien qu'il formate la colonne correctement, il formate également d'autres colonnes avec le format et pas seulement la colonne que j'ai spécifiée. J'ai aussi essayé:

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

Est-ce un bug ou est-ce que je manque quelque chose?

12
elbillaf

Ouvrez-vous un fichier existant? Il est possible qu'un format ait déjà été appliqué aux autres colonnes avant que vous ne l'ouvriez. Ou un modèle comme Astian l'a dit.

Effacez tout le formatage juste au cas où ceci:

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

Test unitaire complet dans 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();
}
16
Ernie S