c# - Generate sheet separated excel with GridView in MVC web enviroment -
i use following code, , i'm wondering if can somehow make sheet separated excel file each row in own sheet.
datatable dt = new datatable(); sqlconnection objcon = new sqlconnection(connectionstring); string sql = "select * 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; i know doesn't generate real excel file rather tricks browser create one. why bit more complicated make advanced excel files. i've tried things setting max amount of rows per gridview page , on.
are there way of doing this, or in general create excel file in way allows me this. without needing windows office or similar installed.
thank time.
i use openxml. i'm guess reason creating excel file on fly because don't want use interop objects because heavy , bulky. still need flexibility manipulate objects. @ openxml library contains many of manipulations looking code below started. in above link you'll notice there example mvc. doesn't change underlying code much.
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 want add empty sheet sheet = new sheet { name = "mysheet2", sheetid = 2, id = relid }; sheets.append(sheet); spreadsheetdocument.workbookpart.workbook.save(); spreadsheetdocument.close(); }
Comments
Post a Comment