2013-03-13 80 views
9

我试图修改现有的Excel工作表。准确地说,我想将几​​行添加到工作表中存在的表格中(使用format作为表格创建)。我试过如何使用EPPlus填充ExcelTable

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

但是这样创建的'表'只是实际表的元数据,我不能将行添加到它。如果我尝试

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

然后我没有得到表的格式。

任何人都知道我如何添加行到表!谢谢

回答

3

我们在我们公司使用类似以下的东西。基本上这个想法是,对于每个要输出的记录,创建一个要加载到excel中的数据对象数组,然后调用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; 
    }