如何在不使用Microsoft参考的情况下为Excel报表创建页面
本文关键字:Excel 情况下 报表 创建 参考 Microsoft | 更新日期: 2023-09-27 17:58:47
我有一种用下面列出的数据创建Excel展开表的方法。
List<ReportData> rd = ReportData.getReportData(startTime, endTime, lNumber, sNumber);
DataTable dt = buildDataTable(rd);
//we actually ahve to have a gridview to put into excel
GridView gv = new GridView();
gv.DataSource = dt;
gv.DataBind();
//flush everything from response to be sure we get a clean start
Response.ClearContent();
//now we create excel file
Response.AddHeader("content-disposition", "attachment;filename=UserRpt.xls");
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(sw);
gv.RenderControl(tw);
//send xls as response
Response.Write(sw.ToString());
Response.End();
我的问题是,如何在不为每件事创建多个报告的情况下创建更多的页面并将数据写入其中?示例:第一页显示第一个gv,第二页显示第二个gv等等。当我添加一个新网格时,它不会创建一个新页面,只是把所有东西都放在后面。我希望这是有道理的,我会很乐意澄清任何事情。谢谢你的帮助!
有很多库可以帮助您做到这一点。有些要求安装Office,有些则不要求。
也许试试http://www.nuget.org/packages/ExcelGenerator
或
http://closedxml.codeplex.com/
我在Aspose和我们的Aspose担任社交媒体开发人员。Cells API可用于轻松实现您的需求。请参阅以下这方面的示例代码,该代码将数据从3个不同的网格视图导出到三个不同的excel表:
//Create a new Workbook
Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
//Add 2 more worksheets other than default worksheet
for (int i = 1; i <= 2; i++)
{
//Add a new worksheet
workbook.Worksheets.Add();
}
//Import data from gridviews to worksheets
workbook.Worksheets[0].Cells.ImportGridView(Gridview1, 0, 0, true, false, true);
workbook.Worksheets[1].Cells.ImportGridView(Gridview2, 0, 0, true, false, true);
workbook.Worksheets[2].Cells.ImportGridView(Gridview3, 0, 0, true, false, true);
//Save the worksheet
workbook.Save("C:''Data''Aspose.xls");