繁体   English   中英

如何使用Linq将数据导出到C#中的excel

[英]How to export data to excel in C# using Linq

我有以下控制器方法,该方法将返回模型中的数据。 如何将所有数据导出到Excel?

public ActionResult iDeal_Table_Display(Guid? SA = null)
{
    var iDConfig = webservice.Get_iDealConfigs(SA,null,null,null,null,null,null, out retStatus, out errorMsg);

    var model = iDConfig.Select(ic => new iDealModel2
    {
        SaPrefix = ic.PrefixName,
        CalendarCode = ic.CalendarCodeName,
        CashnCarry = ic.isCashnCarry,
        FreeMM = ic.isFreeMM,
        OnContract = ic.isOnContract,
        ProductId = ic.ProductName,
        RequestTypeId = ic.RequestTypeName
    }).ToList();

    return PartialView(model);
}

您可以使用DataTables并执行以下操作:

public ActionResult ExportToExcel()
{
    var products = new System.Data.DataTable();
    products.Columns.Add("code", typeof(int));
    products.Columns.Add("description", typeof(string));

    // you can add your columns here as many you want

    var a = db.ABC.Where(x => x.S2 == "ASSETS").FirstOrDefault();
    var l = db.ABC.Where(x => x.S2 == "LIABILITIES").FirstOrDefault();

    // in this way you can get data from database if you are using.. or u may use any other way to seed your file as per your need

    products.Rows.Add(a.S1, a.S2, a.S39, a.S40);
    products.Rows.Add(l.S1, l.S2, l.S39, l.S40);

    // seeding the rows

    var grid = new GridView();
    grid.DataSource = products;
    grid.DataBind();
    Response.ClearContent();
    Response.Buffer = true;

    Response.ContentType = "application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AppendHeader("content-disposition", "attachment; filename=filename.xlsx");

    Response.Charset = "";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    grid.RenderControl(htw);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();

    return View("MyView");
}

对不起,第一个答案。 我找到了一种无需安装Office参考的更好方法

public void toExcel()
{
    var grid = new GridView();

    var iDConfig = blergo.Get_iDealConfigs(null, null, null, null, null, null, null, out retStatus, out errorMsg);

    var model = iDConfig.Select(ic => new iDealModel2
    {
        SaPrefix = ic.PrefixName,
        CalendarCode = ic.CalendarCodeName,
        CashnCarry = ic.isCashnCarry,
        FreeMM = ic.isFreeMM,
        OnContract = ic.isOnContract,
        ProductId = ic.ProductName,
        RequestTypeId = ic.RequestTypeName
    }).ToList();

    grid.DataSource = from data in model.OrderBy(x => x.SaPrefix)
                      select new
                      {
                          SAPrefix = data.SaPrefix,
                          CalendarCode = data.CalendarCode,
                          isCash = data.CashnCarry,
                          FreeMM = data.FreeMM,
                          onContract = data.OnContract,
                          Product = data.ProductId,
                          RequestType = data.RequestTypeId
                      };

    grid.DataBind();

    Response.ClearContent();
    Response.AddHeader("content-disposition", "attachment; filename=iDealConfig.xls");
    Response.ContentType = "application/excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htmlTextWriter = new HtmlTextWriter(sw);

    grid.RenderControl(htmlTextWriter);
    Response.Write(sw.ToString());
    Response.End();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM