1. 程式人生 > >poi匯出後臺提示報錯,Minimum column number is 0!

poi匯出後臺提示報錯,Minimum column number is 0!

解決方案:
實體類裡沒加註解。在需要打印出來的實體類的get方法加上註解@ExcelField

如一張使用者表:

/**
 * Excel註解定義
 * 
 * @version 2013-03-10
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelField {

    /**
     * 匯出欄位名(預設呼叫當前欄位的“get”方法,如指定匯出欄位為物件,請填寫“物件名.物件屬性”,例:“area.name”、“office.name”)
     */
String value() default ""; /** * 匯出欄位標題(需要新增批註請用“**”分隔,標題**批註,僅對匯出模板有效) */ String title(); /** * 欄位型別(0:匯出匯入;1:僅匯出;2:僅匯入) */ int type() default 0; /** * 匯出欄位對齊方式(0:自動;1:靠左;2:居中;3:靠右) */ int align() default 0; /** * 匯出欄位欄位排序(升序) */ int
sort() default 0; /** * 如果是字典型別,請設定字典的type值 */ String dictType() default ""; /** * 反射型別 */ Class<?> fieldType() default Class.class; /** * 欄位歸屬組(根據分組匯出匯入) */ int[] groups() default {}; }
public class User{

    private static final long serialVersionUID = 1
L; private Office company; // 歸屬公司 private Office office; // 歸屬部門 private String loginName;// 登入名 private String password;// 密碼 private String no; // 工號 private String name; // 姓名 private String email; // 郵箱 private String phone; // 電話 private String mobile; // 手機 private String userType;// 使用者型別 private String loginIp; // 最後登陸IP private Date loginDate; // 最後登陸日期 private String loginFlag; // 是否允許登陸 private String photo; // 頭像 private String oldLoginName;// 原登入名 private String newPassword; // 新密碼 private String oldLoginIp; // 上次登陸IP private Date oldLoginDate; // 上次登陸日期 private Role role; // 根據角色查詢使用者條件 private List<Role> roleList = Lists.newArrayList(); // 擁有角色列表 public User() { super(); this.loginFlag = Global.YES; } public User(String id){ super(id); } public User(String id, String loginName){ super(id); this.loginName = loginName; } public User(Role role){ super(); this.role = role; } public String getPhoto() { return photo; } public void setPhoto(String photo) { this.photo = photo; } public String getLoginFlag() { return loginFlag; } public void setLoginFlag(String loginFlag) { this.loginFlag = loginFlag; } @SupCol(isUnique="true", isHide="true") @ExcelField(title="ID", type=1, align=2, sort=1) public String getId() { return id; } @JsonIgnore @NotNull(message="歸屬公司不能為空") @ExcelField(title="歸屬公司", align=2, sort=20) public Office getCompany() { return company; } public void setCompany(Office company) { this.company = company; } @JsonIgnore @NotNull(message="歸屬部門不能為空") @ExcelField(title="歸屬部門", align=2, sort=25) public Office getOffice() { return office; } public void setOffice(Office office) { this.office = office; } @Length(min=1, max=100, message="登入名長度必須介於 1 和 100 之間") @ExcelField(title="登入名", align=2, sort=30) public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } @JsonIgnore @Length(min=1, max=100, message="密碼長度必須介於 1 和 100 之間") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Length(min=1, max=100, message="姓名長度必須介於 1 和 100 之間") @ExcelField(title="姓名", align=2, sort=40) public String getName() { return name; } @Length(min=1, max=100, message="工號長度必須介於 1 和 100 之間") @ExcelField(title="工號", align=2, sort=45) public String getNo() { return no; } public void setNo(String no) { this.no = no; } public void setName(String name) { this.name = name; } @Email(message="郵箱格式不正確") @Length(min=0, max=200, message="郵箱長度必須介於 1 和 200 之間") @ExcelField(title="郵箱", align=1, sort=50) public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Length(min=0, max=200, message="電話長度必須介於 1 和 200 之間") @ExcelField(title="電話", align=2, sort=60) public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Length(min=0, max=200, message="手機長度必須介於 1 和 200 之間") @ExcelField(title="手機", align=2, sort=70) public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } @ExcelField(title="備註", align=1, sort=900) public String getRemarks() { return remarks; } @Length(min=0, max=100, message="使用者型別長度必須介於 1 和 100 之間") @ExcelField(title="使用者型別", align=2, sort=80, dictType="sys_user_type") public String getUserType() { return userType; } public void setUserType(String userType) { this.userType = userType; } @ExcelField(title="建立時間", type=0, align=1, sort=90) public Date getCreateDate() { return createDate; } @ExcelField(title="最後登入IP", type=1, align=1, sort=100) public String getLoginIp() { return loginIp; } public void setLoginIp(String loginIp) { this.loginIp = loginIp; } @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ExcelField(title="最後登入日期", type=1, align=1, sort=110) public Date getLoginDate() { return loginDate; } public void setLoginDate(Date loginDate) { this.loginDate = loginDate; } public String getOldLoginName() { return oldLoginName; } public void setOldLoginName(String oldLoginName) { this.oldLoginName = oldLoginName; } public String getNewPassword() { return newPassword; } public void setNewPassword(String newPassword) { this.newPassword = newPassword; } public String getOldLoginIp() { if (oldLoginIp == null){ return loginIp; } return oldLoginIp; } public void setOldLoginIp(String oldLoginIp) { this.oldLoginIp = oldLoginIp; } @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") public Date getOldLoginDate() { if (oldLoginDate == null){ return loginDate; } return oldLoginDate; } public void setOldLoginDate(Date oldLoginDate) { this.oldLoginDate = oldLoginDate; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } @JsonIgnore @ExcelField(title="擁有角色", align=1, sort=800, fieldType=RoleListType.class) public List<Role> getRoleList() { return roleList; } public void setRoleList(List<Role> roleList) { this.roleList = roleList; } @JsonIgnore public List<String> getRoleIdList() { List<String> roleIdList = Lists.newArrayList(); for (Role role : roleList) { roleIdList.add(role.getId()); } return roleIdList; } public void setRoleIdList(List<String> roleIdList) { roleList = Lists.newArrayList(); for (String roleId : roleIdList) { Role role = new Role(); role.setId(roleId); roleList.add(role); } } /** * 使用者擁有的角色名稱字串, 多個角色名稱用','分隔. */ public String getRoleNames() { return Collections3.extractToString(roleList, "name", ","); } public boolean isAdmin(){ return isAdmin(this.id); } public static boolean isAdmin(String id){ return id != null && "1".equals(id); } @Override public String toString() { return id; } }