其实不用框架完全用servlet就可以完成excel下载
struts2下载的例子这里就不说了,
servlet下载excel的例子:
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("first");
sheet.autoSizeColumn(0);
XSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("Name");
row.createCell(1).setCellValue(2.2);
XSSFCell cell = row.createCell(2);
XSSFCellStyle style = workbook.createCellStyle();
XSSFCreationHelper h = workbook.getCreationHelper();
style.setDataFormat(h.createDataFormat().getFormat("yyyy-MM-dd"));
style.setAlignment(XSSFCellStyle.VERTICAL_CENTER);
cell.setCellStyle(style);
cell.setCellValue(new Date());
//设置第n单元格的宽度,自动
sheet.autoSizeColumn(2);
OutputStream out = response.getOutputStream();
workbook.write(out);
response.setContentType("text/html;charset=UTF-8");
BufferedInputStream in = null;
BufferedOutputStream out = null;
request.setCharacterEncoding("UTF-8");
String rootpath = request.getSession().getServletContext().getRealPath("/");
String fileName = request.getParameter("f");
try {
File f = new File(rootpath + "template/" + fileName);
response.setContentType("application/x-excel");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename="+fileName);
response.setHeader("Content-Length", String.valueOf(f.length()));
in = new BufferedInputStream(new FileInputStream(f));
out = new BufferedOutputStream(response.getOutputStream());
byte[] data = new byte[1024];
int len = 0;
while (-1 != (len = in.read(data, 0, data.length))) {
out.write(data, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
spring mvc 下载excel例子
@RequestMapping("/exprotData")
public ModelAndView exprotData(HttpServletRequest request,HttpServletResponse response) throws Exception {
String customId = request.getParameter("customId");
Map params = request.getParameterMap();
effecQueryService.exprotEffectData(customId,params);
List list = new ArrayList();
Map model = new HashMap();
list.add("test1");
list.add("test2");
model.put("list", list);
EffectDataExcelView viewExcel = new EffectDataExcelView();
return new ModelAndView(viewExcel, model);
}
excel视图
/**
* 生成excel视图,可用excel工具打开或者保存
*
* @author fanzg
*
*/
public class EffectDataExcelView extends AbstractExcelView {
@Override
protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String excelName = "用户信息.xls";
// 设置response方式,使执行此controller时候自动出现下载页面,而非直接使用excel打开
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(excelName, "UTF-8"));
HSSFSheet sheet = workbook.createSheet("list");
sheet.setDefaultColumnWidth((short) 12);
HSSFCell cell = getCell(sheet, 0, 0);
setText(cell, "Spring Excel test");
HSSFCellStyle dateStyle = workbook.createCellStyle();
// dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("mm/dd/yyyy"));
cell = getCell(sheet, 1, 0);
cell.setCellValue("日期:2008-10-23");
// cell.setCellStyle(dateStyle);
getCell(sheet, 2, 0).setCellValue("测试1");
getCell(sheet, 2, 1).setCellValue("测试2");
HSSFRow sheetRow = sheet.createRow(3);
for (short i = 0; i < 10; i++) {
sheetRow.createCell(i).setCellValue(i * 10);
}
}
}