2015-02-24 99 views
10

我寫了一個C#程序來創建一個excel電子表格。該表有多個列。我想格式化一列。用EPPLUS Excel Library格式化一列

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

的問題是,雖然它的格式化列正確的,它也格式化其他列的格式,而不僅僅是我指定的列。 我也試過:

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

這是一個錯誤還是我錯過了什麼?

+0

嗯,我看不出什麼毛病選擇。你正在使用一個模板嗎?模板本身格式錯誤可能嗎?或者您設置的格式可能是數字的默認格式?對不起我沒有太多的幫助 – astian 2015-02-24 15:02:22

+0

我沒有使用模板。知道我可以使用一個。我可以看看。謝謝 – elbillaf 2015-02-24 15:13:26

回答

15

你打開一個現有的文件?它可能有一種格式在打開之前已經應用到其他列。或者像astian這樣的模板說。

清除所有格式,以防萬一是這樣的:在EPPlus 4.0.3

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

全部單元測試:

[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

我從頭創建沒有模板的電子表格。事實證明,我只需格式化一些列就足夠了。我不喜歡它,因爲我仍然不明白爲什麼除了這可能是一個錯誤。現在我不打算玩它了。儘管如此,我仍然要牢記這一點,我可以將格式設置爲null。謝謝 – elbillaf 2015-02-24 19:30:38

+0

@elbillaf您正在運行什麼版本的EPPlus?我在版本4.0.3中嘗試了上面的添加單元測試。 – Ernie 2015-02-24 19:45:05

+0

版本... 4.0.3 – elbillaf 2015-02-24 19:47:28