功能介绍
Excel自适应xls和xlsx两种格式,word只支持docx模式
1.Excel导入
2.Excel导出
3.Excel转html
4.word导出
5.pdf导出
如果你使用的Maven就引入以下坐标
cn.afterturn
easypoi-base
3.2.0
cn.afterturn
easypoi-web
3.2.0
cn.afterturn
easypoi-annotation
3.2.0
SpringBoot
cn.afterturn
easypoi-spring-boot-starter
4.0.0
package com.zzidc.manager.util;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
/**
* @Author: 田晓斌
* @Desc
* @Date: 2019/4/22 16:16
*/
public class FileUtil {
public static void exportExcel(List> list, String title, String sheetName, Class> pojoClass,String fileName,boolean isCreateHeader, HttpServletResponse response){
ExportParams exportParams = new ExportParams(title, sheetName);
exportParams.setCreateHeadRows(isCreateHeader);
defaultExport(list, pojoClass, fileName, response, exportParams);
}
public static void exportExcel(List> list, String title, String sheetName, Class> pojoClass,String fileName, HttpServletResponse response){
defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
}
public static void exportExcel(List
package com.zzidc.manager.dao.bean;
import cn.afterturn.easypoi.excel.annotation.Excel;
import java.util.Date;
public class Site {
private String id;
//name 列名,支持name_id,导入导出excel时的表头的名字
//orderNum 列的排序,支持name_id
//type 导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本
@Excel(name = "城市名称", orderNum = "0",type=10)
private String cityName;
private String cityType;
@Excel(name = "负责人", orderNum = "0")
private String sitePri;
@Excel(name = "电话", orderNum = "0")
private String phone;
@Excel(name = "办公电话", orderNum = "0")
private String workPhone;
@Excel(name = "邮箱", orderNum = "0")
private String email;
private Date createTime;
@Excel(name = "状态", replace = {"正常_true", "不可用_false"})
private Boolean state;
private Date updateTime;
private String cityCode;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName == null ? null : cityName.trim();
}
public String getCityType() {
return cityType;
}
public void setCityType(String cityType) {
this.cityType = cityType == null ? null : cityType.trim();
}
public String getSitePri() {
return sitePri;
}
public void setSitePri(String sitePri) {
this.sitePri = sitePri == null ? null : sitePri.trim();
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone == null ? null : phone.trim();
}
public String getWorkPhone() {
return workPhone;
}
public void setWorkPhone(String workPhone) {
this.workPhone = workPhone == null ? null : workPhone.trim();
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email == null ? null : email.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Boolean getState() {
return state;
}
public void setState(Boolean state) {
this.state = state;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode == null ? null : cityCode.trim();
}
}
@RequestMapping("export")
public void export(HttpServletResponse response){
//模拟从数据库获取需要导出的数
ResultUtil sites = siteService.getSites(1, 8, new Site());
List data = (List) sites.getData();
//导出操作 title带表的是表头就是第一行是标题,而不是表头。sheetName指的多sheet时的名字,设置为Null显示为sheet0,
FileUtil.exportExcel(data,null,null,Site.class,"测站信息.xls",true,response);
}
@RequestMapping("importExcel")
public void importExcel(MultipartFile file){
//解析excel,titleRows指的是上面设置的title如果上面设置了,就要写成1代表第一行是标题,
//写成0代表没有标题headerRows代表表头,当没有标题的时候这个数值设置成1代表第一行是表头,数据在第二行
List siteList = FileUtil.importExcel(file,0,1,Site.class);
for (Site site : siteList) {
//设置id
site.setId(UUIDGenerator.generate());
}
siteService.batSite(siteList);
//TODO 保存数据库
}
使用的是layui
<div class="layui-inline">
<a class="layui-btn layui-btn-normal" href="/export">导出</a>
</div>
<button type="button" class="layui-btn" id="uploadExcel"><i class="layui-icon"></i>导入</button>
//js
upload.render({
elem: '#uploadExcel'
,url: '/importExcel'
,accept: 'file' //普通文件
,multiple: true
,done: function(res){
console.log(res);
}
});