1.从网上下载POI包导入项目,重启项目
//处理导出文件名乱码情况
String fileName = "账户明细账.xls";
String agent =request.getHeader("USER-AGENT").toLowerCase(); //判断浏览器
try {
if (agent.indexOf("firefox") > -1) {//浏览器为火狐
fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
}else{//默认浏览器为IE,其他浏览器皆可用
fileName = URLEncoder.encode(fileName, response.getCharacterEncoding());
}
} catch (Exception e) {
// TODO: handle exception
}
response.setHeader("Content-Disposition","attachment;filename="+fileName);
response.setContentType("application/ vnd.ms-excel");
HSSFWorkbook wb = new HSSFWorkbook();
// 创建Excel的工作sheet,对应到一个excel文档的tab
HSSFSheet sheet = wb.createSheet("sheet1");
// 设置excel每列宽度
sheet.setColumnWidth(0, 2000);
sheet.setColumnWidth(1, 4000);
sheet.setColumnWidth(3, 4000);
sheet.setColumnWidth(6, 4000);
sheet.setColumnWidth(10, 4000);
sheet.setColumnWidth(9, 4000);
sheet.setColumnWidth(21, 4000);
// 创建字体样式
HSSFFont font = wb.createFont();
font.setFontName("Verdana");
font.setBoldweight((short) 100);
font.setFontHeight((short) 300);
font.setColor(HSSFColor.BLUE.index);
// 创建单元格样式
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFont(font);// 设置字体
// 创建Excel的sheet的一行
HSSFRow row = sheet.createRow(0);
row.setHeight((short) 500);// 设定行的高度
// 创建一个Excel的单元格
HSSFCell cell = row.createCell(0);
// 合并单元格(startRow,endRow,startColumn,endColumn)
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 30));
// 给Excel的单元格设置样式和赋值
cell.setCellStyle(style);
cell.setCellValue("行政事业单位资产清查表(土地)");
HSSFRow row1 = sheet.createRow(1);
// 设置单元格内容格式
// style1.setWrapText(true);// 自动换行
// 设置单元格的样式格式
cell = row1.createCell(0);
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 30));
HSSFCellStyle style1 = wb.createCellStyle();
style1.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
cell.setCellStyle(style1);
cell.setCellValue("资产清查 02-18 表");
HSSFRow row2 = sheet.createRow(2);
HSSFCellStyle style2 = wb.createCellStyle();
style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// style2.setBorderBottom(HSSFCellStyle.BORDER_THICK);
// style2.setBorderLeft(HSSFCellStyle.BORDER_THICK);
// style2.setBorderRight(HSSFCellStyle.BORDER_THICK);
// style2.setBorderTop(HSSFCellStyle.BORDER_THICK);
style2.setWrapText(true);// 自动换行
HSSFCellStyle style3 = wb.createCellStyle();
style3.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style3.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style3.setWrapText(true);// 自动换行
cell = row2.createCell(0);
cell.setCellStyle(style3);
cell.setCellValue("填报单位:");
sheet.addMergedRegion(new CellRangeAddress(2,2,0,1));
cell = row2.createCell(2);
cell.setCellValue("值");
cell.setCellStyle(style1);
cell.setCellValue("金额单位:元");
sheet.addMergedRegion(new CellRangeAddress(2,2,2,30));
。。。。省略类似代码。。。
wb.write(response.outputStream);
response.outputStream.flush();
response.outputStream.close();