1.在pom文件中添加依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
2.在properties文件中添加模板路径
路径可自己选择
export.employee.path=D:\\twoworkspace\\crm\\src\\main\\webapp\\xls\\employeeTemplate.xls
3.读取properties配置文件
在spring-dao,xml配置文件中读取properties配置文件(这里路径可根据实际调整)
<context:property-placeholder location="classpath:conf/*.properties"></context:property-placeholder>
4.在页面中触发表格导出事件
这里使用超链接触发事件,然后通过controller来实现
<a href="/employee/exportXls.do" class="btn btn-warning" >
<span class="glyphicon glyphicon-download"></span> 导出
</a>
5.通过controller具体实现
/**
* 1.数据库操作(在数据库中将所有的员工都读取出来,每一个员工的相关信息作为一行)
* 2.excel文件生成(将查询来的员工信息分别放到对应的单元格中)
* 3.文件下载(设置头,身体和状态码)
* @return
*/
//在properties配置文件中创建导出表格时的模板路径,并用字符串定义
@Value("${export.employee.path}")
private String exportEmployeeXlsPath;
@RequestMapping("/exportXls")
@ResponseBody
public ResponseEntity<byte[]> exportXls() throws IOException {
//1.读取数据库中所有员工信息
List<Employee> employees = employeeService.selectAll();
//2.生成xls文件,数据导入进xls文件中
//无参构造器,新建一个xls文件
//如果有inputstream 就是读取一个xls文件的wb对象(读模板)
InputStream is = new FileInputStream(exportEmployeeXlsPath);
//文件 --> 页 --> 行 --> 单元格
//定义一个xls文件(创建文件)
HSSFWorkbook wb = new HSSFWorkbook(is);
//sheet页操作 0表示第一个sheet页(获取文件的第一页)
HSSFSheet sheet = wb.getSheetAt(0);
//行 row
//普通行(获取第三行)
HSSFRow firstRow = sheet.getRow(2);
//普通行样式(获取第三行的样式)
HSSFCellStyle[] firstStyle=new HSSFCellStyle[7];
for (int i = 0; i < firstStyle.length; i++) {
HSSFCell cell = firstRow.getCell(i);
firstStyle[i]=cell.getCellStyle();
}