- 项目前端分三层,view层控制显示,放置好按钮,给出方法名
{
xtype : 'button',
text : '导出',
reference : 'export',
width : 80,
handler : 'downloadHandler'
}
- 前端controller层,写出方法downloadHandler
downloadHandler : function() { var me = this; var selected = me.gridpanel.getSelection(); var datas = []; var me = this; var prjname = me.lookupReference('namefield').getValue(); var areafield = this.lookupReference('areafield').getRawValue(); if (cfg.sub.area != undefined) { areafield = cfg.sub.area; } var line = me.gridpanel.getSelection(); var values = me.gridpanel.getSelectValues(); var ids = ''; Ext.each(line, function(lin) { ids += lin.get('ID') + ','; }); if (ids == '') { EU.toastWarn("请选择要下载的数据!"); return; } else { var columns = me.gridpanel.getColumns(); //列 datas[0] = []; for (var i = 1; i < columns.length; i++) { datas[0][i - 1] = columns[i].text; } for (var i = 0; i < values.length; i++) { var record = values[i]; datas[i + 1] = []; for (var j = 1; j < columns.length; j++) { datas[i + 1][j - 1] = record[columns[j].dataIndex]; } } var stringDatas = JSON.stringify(datas); PU.submit({ url : 'business/projectstatistics/exportGrid.do', params : { fileName : 'export', datas : stringDatas } }); } }
这段代码会发送请求至后台,后台controller层代码
@RequestMapping(value = "/exportGrid") @ResponseBody public void downloadExcel(HttpServletResponse response, StatCommand command) throws IOException { response.setContentType("application/x-excel"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=\"" + java.net.URLEncoder.encode(command.getFileName(), "UTF-8") + ".xls\""); ExportUtil ee = new ExportUtil(); TypeReference<String[][]> trf = new TypeReference<String[][]>() {}; String[][] content = JSON.parseObject(command.getDatas(),trf); OutputStream os = response.getOutputStream(); ee.export(null, null, content, null, os, "0,1", null); }