ExcelUtil.java
3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package com.bsth.util;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
/**
* @ClassName: ExcelUtil.java
* @Description: TODO()
* @author: YouRuiFeng
* @date: 2017-8-13 下午3:00:44
*
*/
@SuppressWarnings("deprecation")
public class ExcelUtil {
public void buildExcelDocument(Map<String, Object> map, String exportName, HttpServletResponse response) throws Exception {
// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
/* // 生成一个表格
HSSFSheet sheet = workbook.createSheet(title);
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth((short) 15);*/
// 生成一个样式
HSSFCellStyle style = workbook.createCellStyle();
// 设置这些样式
style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 生成一个字体
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short) 12);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把字体应用到当前的样式
style.setFont(font);
HSSFCellStyle cellStyle =workbook.createCellStyle();
cellStyle.setFont(font);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平布局:居中
cellStyle.setWrapText(true);
//获取sheet名称
String sheetName = (null==map.get("sheetName"))?"Sheet":map.get("sheetName").toString();
List<String> titleList = (List<String>) map.get("title");
Map<String,List<String>> content = (Map<String,List<String>>)map.get("content");
//设置wordsheet名
HSSFSheet sheet = workbook.createSheet(sheetName);
//创建第一行
HSSFRow row = sheet.createRow(0);
//设置 ABCD列名
sheet.autoSizeColumn((short)0);
for(int i=0;i<titleList.size();i++){
row.createCell(i).setCellValue(titleList.get(i));
row.setRowStyle(cellStyle);
}
for(int i=1;i<=content.size();i++){
sheet.autoSizeColumn((short)i); //调整第一列宽度
HSSFRow row_ = sheet.createRow(i);
List<String> temp = content.get(i+"");
for(int j=0;j<temp.size();j++){
row_.createCell(j).setCellValue(temp.get(j));
row_.setRowStyle(cellStyle);
}
}
String filename =exportName+ ".xls";
response.reset();//设置为没有缓存
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
OutputStream ouputStream = response.getOutputStream();
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close();
}
}