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
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值