Controller层:
//导出处理
@RequestMapping("export.do")
public void export(HttpServletResponse response){
//文件名
String fileName="搜索结果"+System.currentTimeMillis()+".xls";
//sheet名
String sheetName="第一页";
//标题
String []title=new String[] {"类型","患者号","姓名","性别"};
//内容
String [][]values = new String[2][4];
values[0][0]="住院";
values[0][1]="1";
values[0][2]="任*";
values[0][3]="男";
values[1][0]="门诊";
values[1][1]="2";
values[1][2]="杨*";
values[1][3]="女";
HSSFWorkbook wb=SearchService.exportExcel(sheetName, title, values, null);
//将文件存到指定位置
try {
OutputStream os=response.getOutputStream();
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ new String(fileName.getBytes("UTF-8"),"ISO8859-1"));
//不保存缓存信息与response.reset同样效果
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
wb.write(os);
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
使用时只需要传入自己的values数组即可
Service实现层(Controller层会调用):
//excel导出
public HSSFWorkbook exportExcel(String sheetName,String []title,String [][]values, HSSFWorkbook wb) {
//第一步,创建一个webbook,即excel的文档对象
if(wb==null) {
wb=new HSSFWorkbook();
}
//第二步,在webbook中添加一个sheet,即excel的表单
HSSFSheet sheet=wb.createSheet(sheetName);
//设置列宽度
//判断是否为空
if(values!=null && values.length>0){
for(int i=0;i<values[0].length;i++){
sheet.setColumnWidth(i, 256*15);
}
}
//第三步,在sheet中添加表头第0行,即excel的行
HSSFRow row=sheet.createRow(0);
//第四步,创建单元格,并设置值表头,设置表头居中,即excel格子单元
HSSFCellStyle style=wb.createCellStyle();
//居中格式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//边框填充
style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
// //背景颜色
// style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//设置前景填充样式
// style.setFillForegroundColor(HSSFColor.DARK_RED.index);//前景填充色
HSSFCell cell=null;
//创建标题
for(int i=0;i<title.length;i++) {
cell=row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
// 创建内容
for(int i=0;i<values.length;i++) {
row=sheet.createRow(i+1);
for(int j=0;j<values[i].length;j++) {
cell=row.createCell(j);
cell.setCellValue(values[i][j]);
cell.setCellStyle(style);
}
}
return wb;
}