此功能是使用POI进行实现的
POI简介:Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
pom
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
代码如下
public void daochu (HttpServletRequest request,HttpServletResponse response){
//String sql="select * from T_W_ACCIDENT_TEST";
//List<Map<String, Object>> list2 = jdbctemplate.queryForList(sql);
//System.out.println(list2);
//文件第一行名字
String[] title={'a','b','c'};
//文件名字
String name ="车险意外超龄承保.xls";
try {
ExportExcel.CreateExcel(list, request, response,title,name);
} catch (ParseException e) {
e.printStackTrace();
}
}
package com.picc.demand.excel;
public class ExportExcel {
public static void CreateExcel(List<Map<String, Object>> data,HttpServletRequest request, HttpServletResponse response, String[] title, String name) throws ParseException {
// 获取配置文件对象数据
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("1");
sheet.setDefaultColumnWidth(20);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
//style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
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 < data.size(); i++) {
row = sheet.createRow((int) i + 1);
Map<String, Object> map = data.get(i);
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()){// 循环取键值进行判断
String key = iterator.next();// 键
if(("DELETE_FLAG").equals(key)||("UPDATE_USER").equals(key)||("UPDATE_DATE").equals(key)||("CREATE_USER").equals(key)||("CREATE_DATE").equals(key)||("RN").equals(key)){
iterator.remove();// 移除map中以a字符开头的键对应的键值对
}
}
Set<String> dataName=map.keySet();
HSSFCell cell2 = null;
int n=0;
for (String string : dataName) {
cell2 = row.createCell(n);
cell2.setCellValue((String) map.get(string));
cell2.setCellStyle(style);
n++;
}
}
OutputStream out = null;
try {
out = response.getOutputStream();
//UUID.randomUUID().toString()
String fileName=name;// 文件名
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(fileName, "UTF-8"));
wb.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
导出成功 是不是很简单呢QwQ