将数据导出为Excel文件是大家常用到的功能,下面介绍如何使用POI导出Excel
<span style="font-size:14px;">/**
* @param ctx
* @param path excel模板文件绝对路径
* @param fileName excel文件名
* @param out
* @param datas 要导出的数据集合
* @param startRow 从第几行开始写excel
* @param startCell 从第几列开始写excel
*/
public static void generateGroupMember(ServletContext ctx,String path, String fileName, Response response,
String[][] datas, int startRow, int startCell) {
String realName = new String(fileName.getBytes,"ISO8859-1");
//设置response头信息
response.contentType = "text/plain";
response.setHeader("Content-Disposition", "attachment; filename=" + realName );
OutputStream out = null;
try {
//获取工作簿
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(path));
//获取工作表
HSSFSheet sheet = wb.getSheetAt(0);
//设置单元格样式
HSSFCellStyle cellStyle = workbook.createCellStyle();
//设置单元格边框为实线
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
//指定单元格居中对齐
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//指定单元格垂直居中对齐
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
//指定单元格自动换行
cellStyle.setWrapText(true);
//设置字体
HSSFFont font = wb.createFont();
font.setColor(HSSFColor.BLACK.index);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
font.setFontName("黑体");
font.setFontHeightInPoints((short)11);
cellStyle.setFont(font);
//循环写入数据
for(int i=0;i<datas.length;i++){
//创建行
HSSFRow row = sheet.createRow(i + startRow);
for(int j=0;j<datas[i].length;j++){
//创建单元格
HSSFCell cell = row.createCell(j + startCell);
cell.setCellValue(datas[i][j]);
cell.setCellStyle(cellstyle);
}
//设置行高20:1
row.setHeight((short)400);
}
out = response.getOutputStream();
workbook.write();
out.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}</span>