C# 使用Epplus将转发器数据复制到excel?

C# 使用Epplus将转发器数据复制到excel?,c#,asp.net,epplus,C#,Asp.net,Epplus,我正在使用Epplus将数据表写入excel文件,运行良好。我怎样才能为中继器做到这一点 using (ExcelPackage pck = new ExcelPackage()) { ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo"); ws.Cells["A1"].LoadFromDataTable(dt, true); Resp

我正在使用Epplus将数据表写入excel文件,运行良好。我怎样才能为中继器做到这一点

        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());
        }

Repeater类有一个属性
Data
,因此您必须将数据表分配给它。代码可能如下所示

    repeater.DataSource = dt; //dt variable is same as in your example
    repeater.DataBind();
关于为什么需要
DataBind
,您可以读入:

当您说“类对象”时,我想您指的是对象的集合?如果您绑定到中继器,这将是有意义的。如果是这样,为什么不使用
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; }
}
[TestMethod]
公共void LoadFromCollection_Test()
{
//http://stackoverflow.com/questions/29958463/repeater-data-to-excel-using-epplus
//加入一些数据
var数据集=新列表();
对于(var a=0;a<20;a++)
dataSet.Add(新建行对象)
{
ColumnString=“行”+a,
ColumnDateTime=DateTime.Now.AddHours(a)
});
//清除文件
var newFile=newfileinfo(@“C:\Temp\Temp.xlsx”);
if(newFile.Exists)
newFile.Delete();
var i=0;
使用(var package=newexcelpackage(newFile))
{
var ws=package.Workbook.Worksheets.Add(“Sheet1”);
ws.Cells[“A1”].LoadFromCollection(数据集,true);
package.Save();
}
}
公共类行对象
{
公共字符串ColumnString{get;set;}
公共日期时间列日期时间{get;set;}
}

Acutally,我正在获取数据表,然后通过将它们存储到class对象中,然后将该项绑定到repeater,将其转换为不同的格式,这就是为什么我不能使用Epplus的“LoadFromDatatable”选项的原因。@siddhipur那么,您问题中的示例为什么要使用此函数呢?如果它是一类对象,请看这里