您的位置:首页 > 编程语言 > Java开发

POI通过读取Excel模板生成Excel文件

2014-05-07 11:07 459 查看
Java代码  


/** 

     * 导出 

     * @param mapping 

     * @param form 

     * @param request 

     * @param response 

     * @return 

     */  

    public ActionForward export(ActionMapping mapping, ActionForm form,  

            HttpServletRequest request, HttpServletResponse response) {  

          

        String checkBoxValueList = request.getParameter("ckv");  

        if(!CommonUtil.isNotNullorEmtry(checkBoxValueList)) {  

            this.saveMessages(request, "export.fail");  

            return mapping.findForward("export.fail");  

        }  

        List<Order> listOrder = orderService.exportOrderList(checkBoxValueList);  

          

        try {  

//          SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddhhmm");  

//          Calendar calendar = Calendar.getInstance();  

              

            ServletOutputStream os = response.getOutputStream(); //获得输出流  

            response.reset();   //清空输出流  

            String fileName = new String("订单列表".getBytes("gb2312"), "ISO8859-1") +".xls";  

            response.setHeader("Content-disposition", "attachment; filename="+ fileName); //设定输出文件头  

            response.setContentType("application/msexcel"); //定义输出类型  

  

            String filePath = request.getSession().getServletContext().getRealPath("/excel/model/order.xls");  

  

            HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filePath));    //读取excel模板  

            try {  

                HSSFSheet sheet = workbook.getSheetAt(0);   //读取第一个工作簿  

                HSSFRow row;  

                HSSFCell cell = null;  

                int rownum = 3; //添加的起始行  

                HSSFCellStyle style = this.getStyle(workbook);  

                Iterator<Order> it = listOrder.iterator();  

                Order order = null;  

                                  

                while(it.hasNext()) {  

                    order = new Order();  

                    order = it.next();  

                      

                    row = sheet.createRow(rownum);  

                      

                    myCreateCell(1, String.valueOf(rownum-2), row, cell, style);    //列1  

                    myCreateCell(2, order.getAdName(), row, cell, style);   //列2  

                    myCreateCell(3, order.getSmallAreaName(), row, cell, style);    //列1      

                                          

                    rownum++;  

                }  

                                  

                workbook.write(os);  

                os.flush();  

                os.close();  

            } catch (Exception e) {  

                e.printStackTrace();  

            }  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

        return null;  

    }  

      

    private void myCreateCell(int cellnum, String value, HSSFRow row, HSSFCell cell, HSSFCellStyle style) {  

        cell = row.createCell((short) cellnum);  

        cell.setCellValue(new HSSFRichTextString(value));  

        cell.setCellStyle(style);  

    }  

      

    public HSSFCellStyle getStyle(HSSFWorkbook workbook) {  

        //设置字体;  

        HSSFFont font = workbook.createFont();  

        //设置字体大小;  

        font.setFontHeightInPoints((short) 5);  

        //设置字体名字;  

        font.setFontName("Courier New");  

        //font.setItalic(true);  

        //font.setStrikeout(true);  

        //设置样式;  

        HSSFCellStyle style = workbook.createCellStyle();  

        //设置底边框;  

        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);  

        //设置底边框颜色;  

        style.setBottomBorderColor(HSSFColor.BLACK.index);  

        //设置左边框;  

        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);  

        //设置左边框颜色;  

        style.setLeftBorderColor(HSSFColor.BLACK.index);  

        //设置右边框;  

        style.setBorderRight(HSSFCellStyle.BORDER_THIN);  

        //设置右边框颜色;  

        style.setRightBorderColor(HSSFColor.BLACK.index);  

        //设置顶边框;  

        style.setBorderTop(HSSFCellStyle.BORDER_THIN);  

        //设置顶边框颜色;  

        style.setTopBorderColor(HSSFColor.BLACK.index);  

        //在样式用应用设置的字体;  

        style.setFont(font);  

        //设置自动换行;  

        style.setWrapText(false);  

        //设置水平对齐的样式为居中对齐;  

        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  

        //设置垂直对齐的样式为居中对齐;  

        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  

        return style;  

    }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java