【问题标题】:Repeater data to excel using Epplus?使用 Epplus 重复数据到 excel?
【发布时间】:2015-04-30 03:22:23
【问题描述】:

我正在使用 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());
        }

【问题讨论】:

    标签: c# asp.net epplus


    【解决方案1】:

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

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

    关于为什么需要DataBind,您可以阅读:Why is the DataBind() method necessary?

    【讨论】:

    • 实际上,我正在获取数据表,然后通过将它们存储到类对象中然后将该项目绑定到转发器来将其操作为不同的格式,这就是为什么我无法使用“LoadFromDatatable”选项Epplus。
    • @siddhipur 那么为什么您的问题中的示例使用此功能?
    • 无论如何,如果它的对象类看这里stackoverflow.com/questions/674204/…
    【解决方案2】:

    当您说“类对象”时,我假设您的意思是对象集合?如果您绑定到中继器,这将是有意义的。如果是这样,为什么不改用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; }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多