点击查看excel文件导入
POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能。官网:http://poi.apache.org ,POI支持office的所有版本。
POI maven依赖包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-excelant</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-examples</artifactId>
<version>3.16</version>
</dependency>
前台数据
<a href="${pageContext.request.contextPath}/customer/excel" class="coolbg"> 导出Excel </a>
后台数据
@Autowired
private CustomerService customers;
//将页面数据导出excle表格里 response才会执行,用ajax //response不执行
@RequestMapping(value = "/excel",method = RequestMethod.GET)
public String exportExcel(HttpServletResponse response) throws UnsupportedEncodingException{
//固定写法 复制就行 这里写导出excel的名字 设置下载在浏览器端,等用户下载
String fileName = "customer.xls";
response.setHeader("Content-disposition", "attachment;filename="
+ new String(fileName.getBytes("gb2312"), "ISO8859-1"));//设置文件头编码格式
response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");//设置类型
response.setHeader("Cache-Control", "no-cache");//设置头
response.setDateHeader("Expires", 0);//设置日期头
//获取数据库查询的所有数据
List<Customer> list = customers.allCustomer();
//将查询结果带到页面 回显函数使用
Map<String,Object> map=new HashMap();
// 创建导出表格的对象
Workbook wb=new HSSFWorkbook();
// 创建表
Sheet sheet = wb.createSheet("sheet1");
//获取表的第一行元素,也就是0行
Row row = sheet.createRow(0);
// 创建存放列的数组
Cell[] cell=new HSSFCell[5];
for (int i = 0; i <cell.length; i++) {
//吧每一列放到数组中
cell[i]=row.createCell(i);
}
//这个是写的标题头
//给第0行第一列元素赋值
cell[0].setCellValue("序号");
//给第0行第二列元素赋值
cell[1].setCellValue("联系人");
//给第0行第三列元素赋值
cell[2].setCellValue("公司名称");
//给第0行第四列元素赋值
cell[3].setCellValue("添加时间");
//给第0行第五列元素赋值
cell[4].setCellValue("联系电话");
try {
//循环获取从数据库中的集合每个pojo对象的数据
for (int i = 0; i < list.size(); i++) {
//查询的每个对象的数据
Customer customer = list.get(i);
//设置要插入的行为i+1(就是标题下的第一行)
Row row1 = sheet.createRow(i+1);
//创建存放列的数组
Cell[] cell2=new HSSFCell[5];
for (int j = 0; j <cell.length; j++) {
//吧每一列放到数组中
cell2[j]=row1.createCell(j);
}
//给第i+1行第一列元素赋值(默认都是在1开头 所以i+1)
cell2[0].setCellValue(i+1);
//给第i+1行第二列元素赋值 吧对象中的数据写入列中
cell2[1].setCellValue(customer.getCompanyperson());
//给第i+1行第三列元素赋值 吧对象中的数据写入列中
cell2[2].setCellValue(customer.getComname());
//给第i+1行第三列元素赋值 吧对象中的数据写入列中
cell2[3].setCellValue(customer.getAddtime());
//给第i+1行第四列元素赋值 吧对象中的数据写入列中
cell2[4].setCellValue(customer.getComphone());
}
//输出到下载人的电脑上
wb.write(response.getOutputStream());
//刷新
response.getOutputStream().flush();
//关闭
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (wb!=null){
//关闭流
wb.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return "redirect:/customer.jsp";
}