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

我有以下控制器方法,将返回模型中的数据。 如何将所有数据导出为ex​​cel?

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

对第一个答案抱歉。 我find了一个更好的方式,没有安装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(); }