废话不多说直接贴代码:
第一部分:
首先去你maven项目下面找到pom.xml文件下引入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
第二部分:
主要代码块(其中包含了我的业务代码懒得删了,你们参考的时候忽略掉就可以)
/**
* @creator: 李咸通
* @creationtime: 2002-8-2-16:23 ok
*/
@GetMapping("/exportdata")
public void exportdata(HttpServletRequest request, HttpServletResponse response, Map<String, Object> map) {
//这里是我的业务代码请忽略
map.put("aId", getA_id());
map.put("gsId", getCompanyId());
//这里是我的数据源
List<ZlInfoDO> list = htzlInfoService.listexportdata(map);
//创建excel表头,这里是我的业务表头
List<String> column = new ArrayList<>();
column.add("客户姓名");
column.add("房间全称");
column.add("联系人");
column.add("联系电话");
column.add("起租日期");
column.add("止租日期");
column.add("交付日期");
column.add("经办人");
column.add("经办时间");
column.add("合同编号");
column.add("合同类别");
column.add("复核状态");
column.add("合同状态");
//表头对应的数据
List<Map<String, Object>> data = new ArrayList<>();
//循环遍历你的数据源
for (int i = 0; i < list.size(); i++) {
Map<String, Object> dataMap = new HashMap<>();
//get数据源
ZlInfoDO zlinfolist = list.get(i);
//下面是对日期值的处理
//创建时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//定义Data类型
Date startDate = zlinfolist.getStartTime();
Date endDate = zlinfolist.getEndTime();
Date jiaofuDate = zlinfolist.getJiaofuTime();
Date jingbanDate = zlinfolist.getJbsj();
//初始化对应日期变量
String starttiem="";
String endtime="";
String jiaofutime="";
String jingbantime="";
//避免日期为null错误,所以进行if判空处理>>>完成格式转换
if(startDate!=null){
starttiem = sdf.format(startDate);
}
if(endDate!=null){
endtime = sdf.format(endDate);
}
if(jiaofuDate!=null){
jiaofutime = sdf.format(jiaofuDate);
}
if(jingbanDate!=null){
jingbantime = sdf.format(jingbanDate);
}
//复核状态转中文判断
String fuhezhuangtai=zlinfolist.getCheckStatus();
if(fuhezhuangtai.equals("0")){
zlinfolist.setCheckStatus("未复核");
}else{
zlinfolist.setCheckStatus("已复核");
}
//合同状态转中文判断
String hetongzhuangtai=zlinfolist.getHtStatus();
if(hetongzhuangtai.equals("0")){
zlinfolist.setHtStatus("正常");
}else if(hetongzhuangtai.equals("1")){
zlinfolist.setHtStatus("已终止");
}else if(hetongzhuangtai.equals("2")){
zlinfolist.setHtStatus("已过期");
}else if(hetongzhuangtai.equals("3")){
zlinfolist.setHtStatus("审批中");
}else if(hetongzhuangtai.equals("4")){
zlinfolist.setHtStatus("审批完成");
}else if(hetongzhuangtai.equals("5")){
zlinfolist.setHtStatus("审批拒绝");
}
//这里是列对应数据
dataMap.put("客户姓名", zlinfolist.getUserName());
dataMap.put("房间全称", zlinfolist.getRFullname());
dataMap.put("联系人", zlinfolist.getLinkman());
dataMap.put("联系电话", zlinfolist.getTelphone());
dataMap.put("起租日期", starttiem);
dataMap.put("止租日期", endtime);
dataMap.put("交付日期", jiaofutime);
dataMap.put("经办人", zlinfolist.getJbr());
dataMap.put("经办时间", jingbantime);
dataMap.put("合同编号", zlinfolist.getHtBh());
dataMap.put("合同类别", zlinfolist.getHtClass());
dataMap.put("复核状态", zlinfolist.getCheckStatus());
dataMap.put("合同状态", zlinfolist.getHtStatus());
//把此map添加到data
data.add(dataMap);
}
//调用工具类并对应传参
ExportExcelLXT.exportExcel("租赁合同信息表", column, data, request, response);
};
第三部分:
下面是第二部分中最后一行代码调用的工具类,你只需要新建一个.java文件拷贝进去就可以了
public class ExportExcelLXT {
/**
* @param sheetName excel表名
* @param column 列名
* @param data 导出的数据
* @param response
*/
public static void exportExcel(String sheetName, List<String> column, List<Map<String,Object>> data, HttpServletRequest request, HttpServletResponse response){
//创建工作薄
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
//创建sheet
HSSFSheet sheet = hssfWorkbook.createSheet(sheetName);
// 表头
HSSFRow headRow = sheet.createRow(0);
for (int i = 0; i < column.size(); i++){
headRow.createCell(i).setCellValue(column.get(i));
}
for (int i = 0; i < data.size(); i++) {
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
for (int x = 0; x < column.size(); x++) {
dataRow.createCell(x).setCellValue(data.get(i).get(column.get(x))==null?"":data.get(i).get(column.get(x)).toString());
}
}
response.setContentType("application/vnd.ms-excel");
try {
//获取浏览器名称
String agent=request.getHeader("user-agent");
String filename=sheetName+".xls";
//不同浏览器需要对文件名做特殊处理
if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+"," ");
}
//推送浏览器
response.setHeader("Content-Disposition","attachment;filename="+filename);
hssfWorkbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文展示了如何在Java中使用Apache POI库来导出Excel文件。首先在pom.xml中引入POI依赖,然后在业务代码中创建并填充数据,包括日期格式化和状态转换。最后,调用自定义的`ExportExcelLXT`工具类完成Excel的生成与下载,该工具类创建工作簿、设置表头和数据,并通过Http响应发送给客户端。
1639

被折叠的 条评论
为什么被折叠?



