Struts 2导出EXCEL

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;    
}    
   
}   
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值