我写在action里边的 木有写在jsp里边 现在功能能实现  但是后台报错 package com.dzcc.action;import java.io.OutputStream;
import java.util.*;import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import com.dzcc.entity.Roles;
import com.dzcc.service.IqueryUserService;
import com.opensymphony.xwork2.ActionSupport;@Scope("prototype")
public class ExcelUtilsAction extends ActionSupport {
private List listuser;
private IqueryUserService userService; public IqueryUserService getUserService() {
return userService;
} @Resource(name = "IqueryUserService")
public void setUserService(IqueryUserService userService) {
this.userService = userService;
} public List getListuser() {
return listuser;
} public void setListuser(List listuser) {
this.listuser = listuser;
} public String createExcel() {
try {
PageContext page = null;
JspWriter out = page.getOut();
this.listuser = this.userService.getAllUsers();
HttpServletResponse response = ServletActionContext.getResponse();
OutputStream os = response.getOutputStream();
response.reset();
out.clear();
out = page.pushBody();
response.setContentType("application/msexcel;charset=gbk"); // 设置响应格式 // 设置响应头,即报表头
response.setHeader("Content-disposition", "attachment;filename="
+ new String("账户统计报表".getBytes(), "iso-8859-1") + ".xls"); HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("new Sheet");
hwb.setSheetName(0, "账户统计报表"); HSSFRow row = sheet.createRow((short) 0);
sheet.createFreezePane(0, 1);// 设置第一行显示内容
createCell(hwb, row, (short) 0, "角色名称");
createCell(hwb, row, (short) 1, "用户名称"); for (int i = 0; i < listuser.size(); i++) {
HSSFRow row1 = sheet.createRow((short) i);
Roles roles = (Roles) listuser.get(i);
for (int j = 0; j < 2; j++) {
if (j == 0) {
createCell(hwb, row1, (short) j, roles.getRolename());
} else {
createCell(hwb, row1, (short) j, roles.getRolename());
}
}
}
hwb.write(os);

os.close();
} catch (Exception e) {
e.printStackTrace();
}
return "createSuccess";
} public void createCell(HSSFWorkbook wb, HSSFRow row, short col, String val) {
HSSFCell cell = row.createCell(col);
cell.setCellValue(val);
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);
cell.setCellStyle(cellStyle);
}
}
错误信息:java.lang.IllegalStateException: getOutputStream() has already been called for this response我上网搜了一下 说是 输出流的方法冲突 我试图改了一下 还是不能解决 一天了 很着急 希望大家帮帮忙