1.引入maven 依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>${poi.version}</version>
</dependency>
|
2.工具类
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
92
93
94
95
96
97
98
99
100
|
public
class
ExcelUtils {
/**
* @param response
* @param fileName excel文件名
* @param headMap 表头map
* @param dataList 表格数据
*/
public
static
void
exportXlsx(HttpServletResponse response, String fileName,
Map<String, String> headMap, List<Map<String, Object>> dataList) {
Workbook workbook = exportXlsx(fileName, headMap, dataList);
response.setContentType(
"application/binary;charset=ISO8859_1"
);
OutputStream outputStream =
null
;
try
{
outputStream = response.getOutputStream();
String fn =
new
String(fileName.getBytes(),
"ISO8859_1"
);
response.setHeader(
"Content-disposition"
,
"attachment; filename="
+ fn +
".xlsx"
);
workbook.write(outputStream);
}
catch
(Exception e) {
e.printStackTrace();
}
finally
{
if
(outputStream !=
null
) {
try
{
outputStream.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 导出数据
*
* @param headMap
* @param dataList
*/
public
static
Workbook exportXlsx(String sheetName, Map<String, String> headMap, List<Map<String, Object>> dataList) {
Workbook workbook =
new
XSSFWorkbook();
Sheet sheet = workbook.createSheet(sheetName);
int
rowIndex =
0
, columnIndex =
0
;
Set<String> keys = headMap.keySet();
//表头
Row row = sheet.createRow(rowIndex++);
for
(String key : keys) {
Cell cell = row.createCell(columnIndex++);
cell.setCellValue(headMap.get(key));
}
//内容
if
(dataList !=
null
&& !dataList.isEmpty()) {
for
(Map<String, Object> map : dataList) {
row = sheet.createRow(rowIndex++);
columnIndex =
0
;
for
(String key : keys) {
Cell cell = row.createCell(columnIndex++);
setCellValue(cell, map.get(key));
}
}
}
return
workbook;
}
private
static
void
setCellValue(Cell cell, Object obj) {
if
(obj ==
null
) {
return
;
}
if
(obj
instanceof
String) {
cell.setCellValue((String) obj);
}
else
if
(obj
instanceof
Date) {
Date date = (Date) obj;
if
(date !=
null
) {
cell.setCellValue(DateUtils.dfDateTime.format(date));
}
}
else
if
(obj
instanceof
Calendar) {
Calendar calendar = (Calendar) obj;
if
(calendar !=
null
) {
cell.setCellValue(DateUtils.dfDateTime.format(calendar.getTime()));
}
}
else
if
(obj
instanceof
Timestamp) {
Timestamp timestamp = (Timestamp) obj;
if
(timestamp !=
null
) {
cell.setCellValue(DateUtils.dfDateTime.format(
new
Date(timestamp.getTime())));
}
}
else
if
(obj
instanceof
Double) {
cell.setCellValue((Double) obj);
}
else
{
cell.setCellValue(obj.toString());
}
}
}
|
3.controller导出用户数据
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
|
@RequestMapping
(
"/export"
)
public
String export(String username, HttpServletRequest request, HttpServletResponse repsonse) {
//查询用户数据
UserQueryDTO queryDTO =
new
UserQueryDTO() {{
setUsername(username);
}};
List<CmsUser> userList = userService.findUser(queryDTO);
//表头
Map<String, String> headNameMap =
new
LinkedHashMap<String, String>();
headNameMap.put(
"userId"
,
"ID"
);
headNameMap.put(
"roleName"
,
"角色"
);
headNameMap.put(
"userName"
,
"账号"
);
headNameMap.put(
"realName"
,
"姓名"
);
headNameMap.put(
"mobile"
,
"电话号码"
);
headNameMap.put(
"createDate"
,
"创建时间"
);
headNameMap.put(
"status"
,
"状态"
);
//表格数据
List<Map<String, Object>> list =
new
ArrayList<Map<String, Object>>();
if
(userList !=
null
&& userList.size() >
0
) {
for
(CmsUser user : userList) {
String statusName =
"正常"
;
if
(StringUtils.isNotBlank(user.getDeleteFlag()) && user.getDeleteFlag().equals(ConstantHelper.DELETE_FLAG_DELETED)) {
statusName =
"删除"
;
}
String createDate =
""
;
if
(user.getCreateDate() !=
null
) {
createDate =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
).format(user.getCreateDate());
}
String roleName =
""
;
Set<CmsRole> roleSet = roleService.findByUserId(user.getUserId());
if
(roleSet !=
null
&& roleSet.size() >
0
) {
for
(CmsRole r : roleSet) {
roleName += r.getName() +
" "
;
}
}
Map<String, Object> map =
new
HashMap<String, Object>();
map.put(
"userId"
, user.getUserId());
map.put(
"roleName"
, roleName);
map.put(
"userName"
, user.getUsername());
map.put(
"realName"
, user.getRealName());
map.put(
"mobile"
, user.getMobile());
map.put(
"createDate"
, createDate);
map.put(
"status"
, statusName);
list.add(map);
}
}
ExcelUtils.exportXlsx(repsonse,
"用户"
, headNameMap, list);
return
null
;
}
|
本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/p/7596637.html,如需转载请自行联系原作者