2015-04-30 2 views
1

Я использую Epplus для записи datatable в файл excel, который отлично работает. Как я могу сделать это для повторителя?Данные ретранслятора для Excel с использованием Epplus?

 using (ExcelPackage pck = new ExcelPackage()) 
     { 
      ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo"); 
      ws.Cells["A1"].LoadFromDataTable(dt, true); 
      Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
      Response.AddHeader("content-disposition", "attachment; filename=ExcelDemo.xlsx"); 
      Response.BinaryWrite(pck.GetAsByteArray()); 
     } 

ответ

1

Repeater класс имеет свойство Data, так что вы должны назначить таблицу данных для этого. Код может выглядеть так

repeater.DataSource = dt; //dt variable is same as in your example 
    repeater.DataBind(); 

О почему DataBind необходимо вы можете прочитать в: Why is the DataBind() method necessary?

+0

Acutally, я получаю DataTable, а затем манипулировать его в другой формат, сохраняя их в объект класса, а затем связывание этого пункта к ретранслятору, который является, почему я не могу использовать опцию «LoadFromDatatable» из Эпплюса. – siddhipur

+0

@siddhipur, так почему пример в вашем вопросе использует эту функцию? –

+0

В любом случае, если класс объектов выглядит здесь http://stackoverflow.com/questions/674204/binding-a-generic-list-to-a-repeater-asp-net –

1

Когда вы говорите, в «объект класса» Я предполагаю, что вы имеете в виду коллекцию объектов? Что будет иметь смысл, если вы привязываетесь к ретранслятору. Если да, почему бы не использовать LoadFromCollection? Как это:

[TestMethod] 
public void LoadFromCollection_Test() 
{ 
    //http://stackoverflow.com/questions/29958463/repeater-data-to-excel-using-epplus 
    //Throw in some data 
    var dataSet = new List<RowObject>(); 
    for (var a = 0; a < 20; a++) 
     dataSet.Add(new RowObject 
     { 
      ColumnString = "Row " + a, 
      ColumnDateTime = DateTime.Now.AddHours(a) 
     }); 

    //Clear the file 
    var newFile = new FileInfo(@"C:\Temp\Temp.xlsx"); 
    if (newFile.Exists) 
     newFile.Delete(); 

    var i = 0; 
    using (var package = new ExcelPackage(newFile)) 
    { 
     var ws = package.Workbook.Worksheets.Add("Sheet1"); 
     ws.Cells["A1"].LoadFromCollection(dataSet, true); 

     package.Save(); 
    } 
} 

public class RowObject 
{ 
    public string ColumnString { get; set; } 
    public DateTime ColumnDateTime { get; set; } 
} 
Смежные вопросы