将数据集导出到 asp.net C# 中的 Excel 工作表
本文关键字:中的 Excel 工作 net asp 数据集 | 更新日期: 2023-09-27 18:35:35
我试图将有 4 个表的数据集导出到 excel 工作表,不幸的是我不能。我有将数据表导出到 excel 的代码。因此,我调用了代码中的"ExportToExcel"函数,而不是数据集,该函数将数据表导出到excel 4次。但是,一旦它创建了第一个工作表,它就会停止控制流。控件不调用第二个函数("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,请帮助我。否则,请给出您的问题解决方案。
首先,您的函数开始流式传输内容
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,<br/> Please find the Reports Details <br/><br/>";
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# 库将数据集导出为"真正的"Excel .xlsx文件。
它使用Microsoft OpenXML 库,并且只需要一行代码。
导出到Excel。
看起来您的代码适用于 ASP.Net Web 应用程序,因此使用我的库,您的代码将如下所示:
protected void ExportToExcel(object sender, EventArgs e)
{
CreateExcelFile.CreateExcelDocument(dsResult, "YourExcelfilename.xlsx", Response);
}
只需一行代码,您就会得到一个真正的 Excel 文件写入页面的响应。
它将包含数据集中每个数据表的一个工作表。
下面是一些有关如何将数据集导出到 Excel 的代码示例。可以使用ExcelWorksheet.easy_insertDataSet方法插入多个数据表。
关于另一个问题,检查条形图的此代码并调整代码以生成条形图,如下所示:
xlsChart.easy_setChartType(Chart.CHART_TYPE_BAR_CLUSTERED);