action:
public String createExcel() {
jxl.write.Number number;
Label label;
WritableWorkbook workbook;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
workbook = Workbook.createWorkbook(os);
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
label = new jxl.write.Label(0, 0, "商户名");
sheet.addCell(label);
label = new jxl.write.Label(1, 0, "创建时间");
sheet.addCell(label);
label = new jxl.write.Label(2, 0, "绑定用户数");
sheet.addCell(label);
int i = 1;
long totalCount = userService.getAllCount();
for (int j = 0; i < totalCount; j += 100) {//分段写入,防止数据量过大卡死
partnerUserStatList = userService.selectAllPartnerUserStat(j,
100);
Iterator it = partnerUserStatList.iterator();
while (it.hasNext()) {
PartnerUserStat pus = (PartnerUserStat) it.next();
label = new Label(0, i, pus.getBusinessName());
sheet.addCell(label);
label = new Label(1, i, df.format(pus.getCreateTime()));
sheet.addCell(label);
i++;
}
}
workbook.write();
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
is = new ByteArrayInputStream(os.toByteArray());
return "excel";
}
struts.xml:
<action name="createExcel" class="com.CreateExcelAction"
method="createExcel">
<result name="excel" type="stream">
<param name="contentType">
application/vnd.ms-excel
</param>
<param name="inputName">is</param>
<param name="contentDisposition">
filename="user_tatistics.xls"
</param>
<param name="bufferSize">1024</param>
</result>
</action>
如果是条件查询导出数据jsp页面中:
<a href="${excel}" >导出数据</a>
<s:url id="excel" action="createExcel.action" >
<s:param name="startTime" value="startTime" ></s:param>
<s:param name="endTime" value="endTime" ></s:param>
</s:url>