导出excel和到导入类似,不过在此之前我们可以先建立一个模板或者你自己代码写模板都行,这里我就直接用写好的一个模板
在WEB-INFO下面创建upload文件夹放模板使用。
例如:
// 第一步,创建一个webbook对应Excel文件
Workbook wb = WorkbookFactory.create(new FileInputStream(contextPvd.getAppRealPath("/upload/xxx/xxxx.xls")));
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
Sheet sheet = wb.getSheetAt(0);
//第三步,设置模板样式这里只是添加边框及居中效果
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); //下边框
cellStyle.setBorderLeft(CellStyle.BORDER_THIN);//左边框
cellStyle.setBorderTop(CellStyle.BORDER_THIN);//上边框
cellStyle.setBorderRight(CellStyle.BORDER_THIN);//右边框
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//垂直居中
cellStyle.setWrapText(true);//自动换行
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);//对齐方式
// 第四步,写入实体数据 实际应用中这些数据从数据库得到
List<XXX> list= xxxService.queryXxxList(参数);
//第五步,获取行设置内容
Row row = sheet.getRow((int) 0);
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow((int) i + 3);
SjunitprojectBean sjunitprojectBean = sjunitprojectList.get(i);
// 创建单元格,并设置值
row.setHeight((short)600);
Cell cell = row.createCell(0);
cell.setCellValue(i+1);
cell.setCellStyle(cellStyle);
cell = row.createCell(1);
cell.setCellValue(sjunitprojectBean.getUpname());
cell.setCellStyle(cellStyle1);
}
//第六步,设置完成后便可导出操作
//获取文件名 自己定义
String fileName = "xxx.xls";
//根据文件名获取输出文件对应类型
String contentType = ServletActionContext.getServletContext().getMimeType(fileName);
//使用输出流写文件
ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
//设置数据类型
ServletActionContext.getResponse().setContentType(contentType);
//获取客户端浏览器类型 解决中文乱码
String header = ServletActionContext.getRequest().getHeader("User-Agent");
fileName = FileUtils.encodeDownloadFilename(fileName, header);
ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+fileName);
//使用workbook写出
workbook.write(out);
这里的FileUtils工具类自己添加即可代码如下
/**
* 下载文件时,针对不同浏览器,进行附件名的编码
*
* @param filename
* 下载文件名
* @param agent
* 客户端浏览器
* @return 编码后的下载附件名
* @throws IOException
*/
public static String encodeDownloadFilename(String filename, String agent)
throws IOException {
if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+"," ");
}
return filename;
}
以上便是简单的excel导出功能希望对大家有所帮助