pom.xml中加入poi的依赖:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.8</version> <scope>provided</scope> </dependency>
后台action定义一个excelTemplate类,继承自AbstractExcelExportTemplate:
private class UserListTemplate extends AbstractExcelExportTemplate<User>{
public String[] getSheetNames() {
return new String[]{"sheet1"};
}
public String[][] getTitles() {
return new String[][]{{"用户名","账号状态","账号类型"}};
}
@Override
public String[] getCaptions() {
return new String[] {"用户列表情况"};
}
protected void buildBody(int sheetIndex) {
Sheet sheet = getSheet(sheetIndex);
int startIndex = this.getBodyStartIndex(sheetIndex);
for(int i = 0; i < users.size(); i++) {
User u = users.get(i);
Row row = sheet.createRow(i+startIndex);
row.setHeight((short)300);
int index = 0;
createStyledCell(row,index++, u.getUsername(),this.bodyRowStyle);
createStyledCell(row,index++, String.valueOf(u.getEnabled()),this.bodyRowStyle);
createStyledCell(row,index++, u.getDescription(),this.bodyRowStyle);
}
}
}
定义一个action方法,调用:
public String exportToExcel() throws Exception {
getResponse().setContentType(Servlets.EXCEL_TYPE);
Servlets.setFileDownloadHeader(getRequest(),getResponse(), "用户列表.xlsx");
ExcelExportTemplate<User> exportUserListTemplate = new UserListTemplate();
exportUserListTemplate.doExport(getResponse().getOutputStream(), null);
return SUCCESS;
}
struts.xml:
<action name="exportToExcel" class="userAction" method="exportToExcel"> <result type="httpheader"> <param name="status">200</param> </result> </action>
前台用jquery表单post即可:
$("#excelBtn").click(function(){ var frm = $("<form></form>"); frm.attr('action', '/showcase-app/exportToExcel.action'); frm.attr('method', 'post'); frm.appendTo('body'); frm.css('display', 'none'); frm.submit(); frm.remove(); });