六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 55|回复: 0

Struts 2导出EXCEL

[复制链接]

升级  60%

6

主题

6

主题

6

主题

童生

Rank: 1

积分
30
 楼主| 发表于 2013-1-29 07:32:03 | 显示全部楼层 |阅读模式
import java.io.IOException;    import java.io.OutputStream;    import java.util.List;    import javax.servlet.http.HttpServletResponse;    import org.apache.poi.hssf.usermodel.HSSFCell;    import org.apache.poi.hssf.usermodel.HSSFCellStyle;    import org.apache.poi.hssf.usermodel.HSSFDataFormat;    import org.apache.poi.hssf.usermodel.HSSFFont;    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 com.neusoft.dcd.css.common.BaseAction;    import com.neusoft.dcd.css.model.management.user.UserBaseInfo;    import com.neusoft.dcd.css.model.tsc.Tsc;    import com.neusoft.dcd.css.service.tsc.TscService;    import com.opensymphony.xwork2.Preparable;          public class ExportExcel {          private static final long serialVersionUID = 1L;        private TscService cssTscService;        public void prepare() throws Exception {        }           /**        * 绘出Excel        *         * @param actionMapping        * @param actionForm        * @param request        * @param response        * @return        * @throws Exception         */       public String init() throws Exception {            UserBaseInfo userinfo = (UserBaseInfo) ServletActionContext            .getRequest().getSession().getAttribute("UserBaseInfo");            if(userinfo!=null){            HttpServletResponse response = ServletActionContext.getResponse();             List dataList=cssTscService.queryForProTsclb(userinfo.getUserId());             HSSFWorkbook workbook = exportExcel(dataList);            if(workbook!= null){                this.printExcel(workbook,response,"ExcelTsc.xls");            }            }            return SUCCESS;        }          // 导出Excel               private void printExcel(HSSFWorkbook workbook,HttpServletResponse response, String string) throws IOException {            OutputStream out = response.getOutputStream();            response.setHeader("Content-disposition","attachment; filename=" + "TSC.xls");            response.setContentType("application/msexcel;charset=UTF-8");            workbook.write(out);            out.flush();            out.close();                    }           public HSSFWorkbook exportExcel(List dataList) throws Exception        {             HSSFWorkbook workbook = null;             try            {                  // 这里的数据即时你要从后台取得的数据                                    // 创建工作簿实例                  workbook = new HSSFWorkbook();                  // 创建工作表实例                  HSSFSheet sheet = workbook.createSheet("TscExcel");                  // 设置列宽                  this.setSheetColumnWidth(sheet);                  // 获取样式                  HSSFCellStyle style = this.createTitleStyle(workbook);                                   //                 if (dataList != null && dataList.size() > 0)                 {                      // 创建第一行标题,标题名字的本地信息通过resources从资源文件中获取                      HSSFRow row = sheet.createRow((short) 0);// 建立新行                                           this.createCell(row, 0, style, HSSFCell.CELL_TYPE_STRING,                           this.getText("css.tsc.asktime"));                      this.createCell(row, 1, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.productname"));                      this.createCell(row, 2, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.passsort"));                      this.createCell(row, 3, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.askusername"));                      this.createCell(row, 4, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.dtype"));                      this.createCell(row, 5, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.askone"));                      this.createCell(row, 6, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.department"));                      this.createCell(row, 7, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.requesttime"));                      this.createCell(row, 8, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.answertime"));                      this.createCell(row, 9, style, HSSFCell.CELL_TYPE_STRING,                              this.getText("css.tsc.requesttow"));                      // 给excel填充数据                      for(int i=0;i<dataList.size();i++)                      {                          // 将dataList里面的数据取出来,假设这里取出来的是Model,也就是某个javaBean的意思啦                          Tsc  model= (Tsc)dataList.get(i);                          HSSFRow row1 = sheet.createRow((short) (i + 1));// 建立新行                          if(model.getAsktime()!=null)                          this.createCell(row1, 0, style, HSSFCell.CELL_TYPE_STRING,                               model.getAsktime());                          if(model.getProductname()!=null)                          this.createCell(row1, 1, style, HSSFCell.CELL_TYPE_STRING,                               model.getProductname());                            if(model.getPasssort()!=null)                          this.createCell(row1, 2, style, HSSFCell.CELL_TYPE_STRING,                               model.getPasssort());                          if(model.getAskusername()!=null)                          this.createCell(row1, 3, style, HSSFCell.CELL_TYPE_STRING,                               model.getAskusername());                          if(model.getDtype()!=null)                          this.createCell(row1, 4, style, HSSFCell.CELL_TYPE_STRING,                                model.getDtype());                          if(model.getAskone()!=null)                          this.createCell(row1, 5, style, HSSFCell.CELL_TYPE_STRING,                                model.getAskone());                          if(model.getDepartment()!=null)                          this.createCell(row1, 6, style, HSSFCell.CELL_TYPE_STRING,                                model.getDepartment());                          if(model.getRequesttime()!=null)                          this.createCell(row1, 7, style, HSSFCell.CELL_TYPE_STRING,                                model.getRequesttime());                          if(model.getAnswertime()!=null)                          this.createCell(row1, 8, style, HSSFCell.CELL_TYPE_STRING,                                model.getAnswertime());                          if(model.getRequesttow()!=null)                          this.createCell(row1, 9, style, HSSFCell.CELL_TYPE_STRING,                                model.getRequesttow());                                            }                 }                 else {                     this.createCell(sheet.createRow(0), 0, style,                     HSSFCell.CELL_TYPE_STRING, "查无资料");                 }             }catch(Exception e)             {                 e.printStackTrace();             }            return workbook;           }        private void setSheetColumnWidth(HSSFSheet sheet)        {                // 根据你数据里面的记录有多少列,就设置多少列                sheet.setColumnWidth((short) 0, (short) 3000);                sheet.setColumnWidth((short) 1, (short) 3000);                sheet.setColumnWidth((short) 2, (short) 3000);                sheet.setColumnWidth((short) 3, (short) 3000);                sheet.setColumnWidth((short) 4, (short) 5000);                sheet.setColumnWidth((short) 5, (short) 5000);                sheet.setColumnWidth((short) 6, (short) 5000);                sheet.setColumnWidth((short) 7, (short) 5000);                sheet.setColumnWidth((short) 8, (short) 5000);                sheet.setColumnWidth((short) 9, (short) 5000);        }        // 设置excel的title样式        private HSSFCellStyle createTitleStyle(HSSFWorkbook wb) {           HSSFFont boldFont = wb.createFont();           boldFont.setFontHeight((short) 200);           HSSFCellStyle style = wb.createCellStyle();           style.setFont(boldFont);           style.setDataFormat(HSSFDataFormat.getBuiltinFormat("###,##0.00"));           return style;       }       // 创建Excel单元格       private void createCell(HSSFRow row, int column, HSSFCellStyle style,               int cellType,Object value) {               HSSFCell cell = row.createCell((short) column);               cell.setEncoding(HSSFCell.ENCODING_UTF_16);               if (style != null) {                  cell.setCellStyle(style);              }               switch (cellType) {                  case HSSFCell.CELL_TYPE_BLANK: {           }               break;           case HSSFCell.CELL_TYPE_STRING: {               cell.setCellValue(value.toString());                }               break;           case HSSFCell.CELL_TYPE_NUMERIC: {               cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);               // DecimalFormat format = new DecimalFormat("###,##0.00");               // cell.setCellValue(Float.parseFloat(value.toString()));               cell.setCellValue(Double.parseDouble(value.toString()));           }               break;           default:               break;           }       }       public void setCssTscService(TscService cssTscService) {        this.cssTscService = cssTscService;    }       }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表