springboot导出数据到Excel表格
开发工具与关键技术:Java springboot
作者:熊俊杰
撰写时间:2021.6.18
在使用导出的时候,pom.xml先引用poi框架
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
接下来就可以直接使用这个框架来导出数据了
//导出数据
public void Daochuassigns1(String assignsname, String isactive, HttpServletResponse response) throws IOException{
List<x_assigns> xa = xAssignsservices.daochushuju(assignsname,isactive);//查询出来的数据
int count = xa.size();
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("导出数据");//模板名称
HSSFRow row = null;
row = sheet.createRow(0);//创建第一个单元格
row.setHeight((short) (26*20));//单元格的行高
row.createCell(0).setCellValue("站点信息列表");//第一行单元格信息
/*为标题设置表格以及内容
* firstRow:从第一行开始
* lastRow:从第0行结束
* firstCol:从第一个单元格开始
* lastCol:从第*个单元格结束
* */
CellRangeAddress rowRegin = new CellRangeAddress(0,0,0,3);
sheet.addMergedRegion(rowRegin);
row = sheet.createRow(1);
row.setHeight((short) (22*20));//单元格的行高
row.createCell(0).setCellValue("名称");//第一行单元格信息
row.createCell(1).setCellValue("联系电话");//第二行单元格信息
row.createCell(2).setCellValue("地址");//第三行单元格信息
row.createCell(3).setCellValue("坐标");//第四行单元格信息
//遍历所有数据
for (int i=0;i < count;i++){
x_assigns x = xa.get(i);
row = sheet.createRow(i+2);
//row.setHeight((short) (17*20));//单元格的行高
row.createCell(0).setCellValue(x.getAssignsname());//第一行单元格信息
row.createCell(1).setCellValue(x.getAssignsphone());//第二行单元格信息
row.createCell(2).setCellValue(x.getAssignssite());//第三行单元格信息
row.createCell(3).setCellValue(x.getCoordinates());//第四行单元格信息
}
sheet.setDefaultRowHeight((short) (17*20));
//列宽自适应
for (int i =0;i<=13;i++){
sheet.autoSizeColumn(i);
}
response.setContentType("application/vnd.ms-excel;charset=utf-8");
OutputStream os = response.getOutputStream();
response.setHeader ("Content-disposition","attachment;filename=导出数据.xls");//文件名称
wb.write(os);
os.flush();
os.close();
}
还有一种更简单的导出方式,pom.xml引用easypoi导出excel表格
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.0.0</version>
</dependency>
在对应的实体类里面使用刚刚引用的框架,然后写上对应类的名称
然后直接通过下面的方法导出数据
//导出数据
@RequestMapping(value = "/Daochuassigns")//easypoi导出,method = RequestMethod.GET
public void Daochuassigns(String assignsname, String isactive, HttpServletResponse response) throws IOException {
List<x_assigns> xa = xAssignsservices.daochushuju(assignsname,isactive);//查询出数据
//设置序号(将id字段作为序号,导出后实现序号递增)
Integer i =1;
for (x_assigns assigns : xa) {
assigns.setAssignsid(i++);
}
// 导出操作
ExcelUtils.exportExcel(xa, "报名点报表", "导出报名点", x_assigns.class, "报名点报表.xls", response);
}