将数据集导出到asp.net c中的excel表
我试图将有4个表的数据集导出到excel表,不幸的是我不能。 我有代码将数据表导出到excel。 因此,我调用了“ExportToExcel”函数而不是数据集,我在我的代码中将数据表导出为excel 4次。 但是一旦它创建了第一张纸,就会停止控制流程。 Control不调用第二个函数(“ExportToExcel(dsResult.Tables [2],”AthleteSentCount“);”)这是代码
protected void ExportToExcel(object sender, EventArgs e) { ExportToExcel(dsResult.Tables[3], "AthleteInboxCount"); ExportToExcel(dsResult.Tables[2], "AthleteSentCount"); ExportToExcel(dsResult.Tables[0], "CoachInboxCount"); ExportToExcel(dsResult.Tables[1], "CoachSentCount"); } void ExportToExcel(DataTable dt, string FileName) { if (dt.Rows.Count > 0) { string filename = FileName + ".xls"; System.IO.StringWriter tw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); DataGrid dgGrid = new DataGrid(); dgGrid.DataSource = dt; dgGrid.DataBind(); //Get the HTML for the control. dgGrid.RenderControl(hw); //Write the HTML back to the browser. //Response.ContentType = application/vnd.ms-excel; Response.ContentType = "application/vnd.ms-excel"; Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ""); this.EnableViewState = false; Response.Write(tw.ToString()); Response.End(); } }
如果有人知道要用条形图将数据集导出到excel,请帮助我。 否则请解决问题。
提前致谢。
首先,您的function开始流式传输内容
Response.ContentType = "application/vnd.ms-excel"; Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
最终用户和结束它
Response.End();
此外,如果您修复此问题,您的代码将生成4个excel文件。
现有的代码用于在堆栈溢出时创建Excel工作表: 如何从DataTable向Excel添加其他工作表您必须进行的唯一更改是将xlsx保存为流并将此流传输给用户。
写在WCF和ASMX中
但是我使用了EPPuls。 dlll文件的开源DLL。 请查看以下链接以获取参考。 http://epplus.codeplex.com/ 。
代码:
string excelFileName = @"E:\GOPI_16122016.xls"; DataTable dt = ds.Tables[0]; string worksheetsName = "Report"; ExcelPackage pack = new ExcelPackage(); ExcelWorksheet wrkSht = pack.Workbook.Worksheets.Add(worksheetsName); wrkSht.Cells["A1"].LoadFromDataTable(dt, true); pack.SaveAs(new FileInfo(excelFileName)); MailMessage msg = new MailMessage(); msg.To.Add(new MailAddress("gopi@kanike.com", "GOPIKRISHNA")); msg.From = new MailAddress("No-reply@domain.co.in", "Domain"); msg.Subject = "REPORTS"; string str = "Dear Team,
Please find the Reports Details
"; Attachment attachment = new System.Net.Mail.Attachment(excelFileName); msg.Attachments.Add(attachment); msg.Body = str ; msg.IsBodyHtml = true; SmtpClient client = new SmtpClient(); client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("No-reply@domain.co.in", ""); client.Port = 25; // You can use Port 25 if 587 is blocked (mine is!) client.Host = "domain@.com"; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = true; client.Send(msg);
欢迎您下载并使用我的免费C#库将DataSet导出为“真正的”Excel .xlsx文件。
它使用Microsoft OpenXML库,只需一行代码。
导出到Excel
看起来您的代码是针对ASP.Net Web应用程序的,因此使用我的库,您的代码将如下所示:
protected void ExportToExcel(object sender, EventArgs e) { CreateExcelFile.CreateExcelDocument(dsResult, "YourExcelfilename.xlsx", Response); }
只需一行代码,您就可以获得写入页面响应的真实Excel文件。
它将在DataSet中为每个DataTable包含一个工作表。
以下是有关如何将数据集导出到Excel的一些源代码示例。 您可以使用ExcelWorksheet.easy_insertDataSet方法插入多个数据表。
关于另一个问题,请检查条形图的此代码并调整代码以生成如下条形图:
xlsChart.easy_setChartType(Chart.CHART_TYPE_BAR_CLUSTERED);