2013-03-13 12 views
9

Sto tentando di modificare il foglio di lavoro excel esistente. Precisamente mi piacerebbe aggiungere alcune righe a una tabella esistente nel foglio di lavoro (creata utilizzando il formato come tabella). Ho provatoCome popolare un ExcelTable utilizzando EPPlus

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

ma il 'tavolo' così creato è solo una meta-dati della tabella effettiva, e non posso aggiungere righe ad esso. Se provo

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

Quindi non ottengo la formattazione del tavolo.

Qualcuno sa come aggiungo righe al tavolo! Grazie

risposta

3

Usiamo qualcosa come il seguente nella nostra azienda. Fondamentalmente l'idea è che per ogni record che si desidera produrre si crei un array di oggetti dei dati da caricare in Excel e quindi chiamare 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; 
    } 
Problemi correlati