在MVC Web环境中,使用GridView生成表单分离的excel
我使用下面的代码,我想知道是否可以以某种方式使这个工作表分隔excel文件与自己的工作表中的每一行。
DataTable dt = new DataTable(); SqlConnection objcon = new SqlConnection(connectionString); string sql = "SELECT * FROM table"; SqlDataAdapter objda = new SqlDataAdapter(sql, objcon); objda.Fill(dt); GridView gvreport = new GridView(); gvreport.DataSource = dt; gvreport.DataBind(); string date = DateTime.Now.ToString("yyyy_MM_dd_HHmmss"); string fileName = string.Format("TheFilename_{0}.xls", date); Response.ClearContent(); Response.AddHeader("content-disposition", "attachment; filename=" + fileName); Response.ContentType = "application/excel"; System.IO.StringWriter sw = new System.IO.StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); gvreport.RenderControl(htw); Response.Write(sw.ToString()); Response.End(); return null;
我知道这并不完全生成一个真正的Excel文件,而是使浏览器创build一个。 这可能是为什么制作高级的excel文件要复杂一点。 我已经尝试了诸如为每个gridview页面设置最大数量的行等等。
有没有办法做到这一点,或者一般创build一个Excel文件的另一种方式,让我这样做。 无需安装Windows Office或类似软件。
感谢您的时间。
我会使用像OpenXML的东西。 我猜你创buildExcel文件的原因是因为你不想使用互操作对象,因为它们太笨重了。 但是,您仍然需要灵活地操作对象。 我会看看OpenXML库,因为它包含了许多操作,你在寻找代码看起来像下面的东西,让你开始。 在上面的链接中你会注意到有一个mvc的例子。 这实际上不会改变底层代码。
using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook)) { WorkbookPart workBookPart = spreadSheetDocument.AddWorkbookPart(); WorksheetPart worksheetPart = workBookPart.AddNewPart<WorksheetPart>(); WorkbookStylesPart workBookStylesPart = workBookPart.AddNewPart<WorkbookStylesPart>(); Stylesheet stylesheet = new CustomStyleSheet(); stylesheet.Save(workBookStylesPart); string relId = workBookPart.GetIdOfPart(worksheetPart); Workbook workbook = new Workbook(); Worksheet worksheet = new Worksheet(); var columns = CreateColumns(); Sheets sheets = new Sheets(); Sheet sheet = new Sheet { Name = "mySheet", SheetId = 1, Id = relId }; sheets.Append(sheet); worksheet.Append(columns); SheetData sheetData = CreateSheetData(); worksheet.Append(sheetData); workbook.Append(sheets); worksheetPart.Worksheet = worksheet; worksheetPart.Worksheet.Save(); spreadSheetDocument.WorkbookPart.Workbook = workbook; spreadSheetDocument.WorkbookPart.Workbook.Save(); //Now I want to add an empty sheet sheet = new Sheet { Name = "mySheet2", SheetId = 2, Id = relId }; sheets.Append(sheet); spreadSheetDocument.WorkbookPart.Workbook.Save(); spreadSheetDocument.Close(); }
- 自动将单元格范围转换为另一张图片上的图片并自动更新的excel
- 完整的日历到Excel和.pdf
- 如何使用Server.MapPath for Excel文件
- 如何使用Excel导出function部署我的应用程序?
- 如何使用LINQ to Entity将数据导出到Excel?
- 无法加载文件或程序集“Microsoft.Office.Interop.Excel,Version = 15.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c'
- 将多个HTML表格输出到单个Excel表单
- 如何设置列的长度和types
- EPPlus AddPicture导致Excel 2007文件损坏