easypoi功能如同名字easy,主打的功能就是容易,讓一個沒見接觸過poi的人員 就可以方便的寫出Excel導出,Excel模板導出,Excel導入,Word模板導出,通過簡單的注解和模板 語言(熟悉的表達式語法),完成以前復雜的寫法。
具體實現步驟:
1、Maven中添加依賴
<!--easypoi導出excel-->
<!--easypoi-base 導入導出的工具包,可以完成Excel導出,導入,Word的導出,Excel的導出功能-->
<dependency>
<groupId>org.jeecg</groupId>
<artifactId>easypoi-base</artifactId>
<version>${easypoi-base.version}</version>
</dependency>
<!--easypoi-web 耦合了spring-mvc 基於AbstractView,極大的簡化spring-mvc下的導出功能-->
<dependency>
<groupId>org.jeecg</groupId>
<artifactId>easypoi-web</artifactId>
<version>${easypoi-web.version}</version>
</dependency>
<!--easypoi-annotation 基礎注解包,作用與實體對象上,拆分后方便maven多工程的依賴管理-->
<dependency>
<groupId>org.jeecg</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>${easypoi-annotation.version}</version>
</dependency>
2、POJO中添加注解
/** * <p> * 管理員表 * </p> * * @Excel所含的參數: * name:導入導出字段名稱,比如: name = "學生姓名" * replace :替換值,比如:replace = {"男_1","女_2"} * width :寬度,比如:width = 30,默認10 * height :高度(一個設置全局生效), height = 20 ,默認10 * orderNum :排序,默認0 * format :時間格式化 * type :導出字段類型導出類型 1 是文本 2 是圖片,3是函數默認是文本,默認1 * imageType :圖片類型, 導出類型 1 從file讀取 2 是從數據庫中讀取,默認1 * savePath :圖片保存路徑,默認upload * */ @ExcelTarget("user") public class User extends Model<User> { private static final long serialVersionUID = 1L; /** * 主鍵id */ @TableId(value="id", type= IdType.AUTO) private Integer id; /** * 頭像 */ private String avatar; /** * 賬號 */ @Excel(name = "賬號", orderNum = "1", mergeVertical = true, isImportField = "account") private String account; /** * 密碼 */ private String password; /** * md5密碼鹽 */ private String salt; /** * 名字 */ @Excel(name = "姓名", orderNum = "2", mergeVertical = true, isImportField = "name") private String name; /** * 生日 */ private Date birthday; /** * 性別(1:男 2:女) */ private Integer sex; /** * 電子郵件 */ @Excel(name = "郵箱", orderNum = "6", mergeVertical = true, isImportField = "email", width = 30) private String email; /** * 電話 */ @Excel(name = "電話", orderNum = "7", mergeVertical = true, isImportField = "phone",width = 30) private String phone; /** * 角色id */ private String roleid; /** * 部門id */ private Integer deptid; /** * 狀態(1:啟用 2:凍結 3:刪除) */ private Integer status; /** * 創建時間 */ @Excel(name = "創建時間", orderNum = "8", mergeVertical = true, isImportField = "createtime" ,format="yyyy-MM-dd hh:mm:ss",width = 30) private Date createtime; /** * 保留字段 */ private Integer version; /** * 用於EXCEL導出的相關字段,與Warpper中翻譯字段對應 * transient:去序列化,防止將這些字段加入到sql語句中導致sql報錯 */ @Excel(name = "性別", orderNum = "3", mergeVertical = true, isImportField = "sexName") private transient String sexName; @Excel(name = "角色", orderNum = "4", mergeVertical = true, isImportField = "roleName" , width = 20) private transient String roleName; @Excel(name = "部門", orderNum = "5", mergeVertical = true, isImportField = "deptName") private transient String deptName; @Excel(name = "狀態", orderNum = "9", mergeVertical = true, isImportField = "statusName") private transient String statusName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSalt() { return salt; } public void setSalt(String salt) { this.salt = salt; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getRoleid() { return roleid; } public void setRoleid(String roleid) { this.roleid = roleid; } public Integer getDeptid() { return deptid; } public void setDeptid(Integer deptid) { this.deptid = deptid; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public Integer getVersion() { return version; } public void setVersion(Integer version) { this.version = version; } @Override protected Serializable pkVal() { return this.id; } public String getSexName() { return sexName; } public void setSexName(String sexName) { this.sexName = sexName; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public String getStatusName() { return statusName; } public void setStatusName(String statusName) { this.statusName = statusName; } }
3、Controller中請求
// 下載execl文檔 @RequestMapping("/downloadExcel") public void download(HttpServletRequest request, HttpServletResponse response) throws Exception { // 告訴瀏覽器用什么軟件可以打開此文件 response.setHeader("content-Type", "application/vnd.ms-excel"); // 下載文件的默認名稱 response.setHeader("Content-Disposition", "attachment;filename=" + new String("用戶數據表".getBytes("gbk"), "iso8859-1")+".xls"); //編碼 response.setCharacterEncoding("UTF-8"); List<User> list = userService.findAll(); Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), User.class, list); workbook.write(response.getOutputStream()); }
4、前端頁面添加Button
<input type="button" value="導出為Excel" onclick="window.open('/downloadExcel');"/>
導出功能實現!
