2015-02-24 17 views
10

Tôi đã viết chương trình C# để tạo bảng tính excel. Trang tính có nhiều cột. Tôi muốn định dạng MỘT trong số các cột.Định dạng cột với Thư viện 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(); 

Vấn đề là, trong khi định dạng cột đúng, nó cũng định dạng các cột khác có định dạng chứ không chỉ cột tôi đã chỉ định. Tôi cũng đã thử:

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

Đây có phải là lỗi hoặc tôi thiếu gì đó không?

+0

hmm, tôi không thể nhìn thấy bất cứ điều gì sai với bộ chọn. Bạn đang sử dụng mẫu phải không? Có thể bản thân mẫu có định dạng sai không? Hoặc định dạng bạn đang đặt có thể là định dạng mặc định cho số? Xin lỗi Im không được giúp đỡ nhiều – astian

+0

Tôi không sử dụng mẫu. Tôi biết tôi có thể sử dụng nó. Tôi có thể xem xét điều đó.thanks – elbillaf

Trả lời

15

Bạn có đang mở tệp hiện có không? Nó có thể có một định dạng đã được áp dụng cho các cột khác trước khi bạn mở nó. Hoặc một mẫu như astian nói.

Xóa tất cả các định dạng chỉ trong trường hợp như thế này:

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

đơn vị kiểm tra đầy đủ trong 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

Tôi đang tạo bảng tính từ đầu mà không cần mẫu. Hóa ra là đủ để tôi chỉ định dạng một vài cột. Tôi không thích nó, bởi vì tôi vẫn không hiểu tại sao ngoại trừ việc đây có thể là một lỗi. Tôi sẽ không chơi với nó bây giờ nó đang hoạt động. Tuy nhiên tôi sẽ ghi nhớ điều này, rằng tôi có thể đặt định dạng thành rỗng. Cảm ơn – elbillaf

+0

@elbillaf Bạn đang chạy phiên bản EPPlus nào? Tôi đã thử bài kiểm tra đơn vị được thêm ở trên trong phiên bản 4.0.3. – Ernie

+0

Phiên bản ... 4.0.3 – elbillaf

Các vấn đề liên quan