2013-03-13 24 views
9

Tôi đang cố gắng sửa đổi trang tính excel hiện có. Chính xác tôi muốn thêm một vài hàng vào một bảng tồn tại trong trang tính (được tạo bằng cách sử dụng định dạng dưới dạng bảng). Tôi đã thửLàm cách nào để điền một ExcelTable bằng EPPlus

var table = sheet.Tables["PositionsTable"]; 

nhưng 'bảng' do đó được tạo chỉ là siêu dữ liệu của bảng thực tế và tôi không thể thêm hàng vào bảng đó. Nếu tôi thử

sheet.Cells[table.Address.Address.ToString()].LoadFromCollection(positions); 

Sau đó, tôi không nhận được định dạng của bảng.

Bất kỳ ai cũng biết cách tôi thêm hàng vào bảng! Cảm ơn

Trả lời

3

Chúng tôi sử dụng một số thông tin như sau tại công ty của chúng tôi. Về cơ bản ý tưởng là cho mỗi bản ghi bạn muốn xuất bạn tạo một mảng đối tượng của dữ liệu để tải vào excel và sau đó gọi LoadFromArrays.

 using (var excelPkg = new ExcelPackage()) 
     { 
      var name = "Sheet1"; 
      //You will probably pass the columns to output into this function 
      var headerArray = new string[] { "Column1", "Column2" }; 
      var data = positions 
       .Select(i => headerArray.Select(h => GetValue(i, h)).ToArray()); 
      var ws = excelPkg.Workbook.Worksheets.Add(name); 
      ws.Cells["A1"].LoadFromArrays(
       ((object[])headerArray).ToSingleItemEnumerable().Union(data)); 
      ws.Row(1).Style.Font.Bold = true; //set header to bold 
      excelPkg.SaveAs(stream, "password"); 
     } 

    private static object GetValue(Position item, string field) 
    { 
     //Your logic goes here 
     return null; 
    } 

    public static IEnumerable<T> ToSingleItemEnumerable<T>(this T o) 
    { 
     yield return o; 
    } 
Các vấn đề liên quan