zoukankan      html  css  js  c++  java
  • jxl将list导入到Excel中供下载

    jxl操作excel

        /**
         * 分隔符
         */
        private final static String SEPARATOR = "|";
        
        /**
         * 由List导出至指定的Sheet,带total行(最后一行)
         * @param wb   模板的workbook
         * @param sheetNum   第几个表单
         * @param targetFilePath 生成文件夹路径
         * @param l 内容list集合,以|分割的对象string集合
         * @param headInfoRows  头信息的行数
         * @param columnsLength  列数
         * @param remarkRowNumber 备注所在行
         * @param remark  备注
         * @return
         * @throws WriteException
         * @throws IOException
         * int
         */
        public static int exportExcelFromList(jxl.Workbook wb, int sheetNum,
                String targetFilePath, List<String> l, int headInfoRows,
                int columnsLength,int remarkRowNumber,String remark) throws WriteException, IOException {
            // 创建可写入的Excel工作薄对象
            WritableWorkbook wwb = null;
            int writeCount = 0;
    
            // 单元格样式
            // WritableFont bold = new
            // WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
            WritableCellFormat normalFormat = new WritableCellFormat(
                    NumberFormats.TEXT);
            normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN,
                    jxl.format.Colour.BLACK);
            
            
            //设置字体;  
            WritableFont font = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED);  
            WritableCellFormat normalFormat_total = new WritableCellFormat(
                    font);
            normalFormat_total.setBorder(Border.ALL, BorderLineStyle.THIN,
                    jxl.format.Colour.BLACK);
    
            try {
                
                // 创建可写入的Excel工作薄对象
                wwb = jxl.Workbook.createWorkbook(new File(targetFilePath), wb);
                WritableSheet ws = wwb.getSheet(0);
                
                Label cellRemark = new Label(0, remarkRowNumber, remark,
                        normalFormat);
                ws.addCell(cellRemark);
    
                int row = l.size();
                int columns = columnsLength;
                String[] ary = new String[120];
                
                for (int i = 0; i < row; i++) {
                    ary = l.get(i).split("\" + SEPARATOR);
                    for (int j = 0; j < columns; j++) {
                        
                        if(i==row-1)
                        {
                            Label cell = new Label(j, i + headInfoRows, ary[j],
                                    normalFormat_total);
                            ws.addCell(cell);
                        }else
                        {
                            Label cell = new Label(j, i + headInfoRows, ary[j],
                                    normalFormat);
                            ws.addCell(cell);
                        }
                    }
                    writeCount++;
                }
                wwb.write();
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if (wwb != null) {
                    wwb.close();
                }
    
            }
    
            return writeCount;
    
        }
        
        /**
         * 导出不需要合计行
         * @param wb
         * @param sheetNum
         * @param targetFilePath
         * @param l
         * @param headInfoRows
         * @param columnsLength
         * @param remarkRowNumber
         * @param remark
         * @return
         * @throws WriteException
         * @throws IOException
         */
        public static int exportExcelFromListNoTotal(jxl.Workbook wb, int sheetNum,
                String targetFilePath, List<String> l, int headInfoRows,
                int columnsLength,int remarkRowNumber,String remark) throws WriteException, IOException {
            // 创建可写入的Excel工作薄对象
            WritableWorkbook wwb = null;
            int writeCount = 0;
    
            // 单元格样式
            // WritableFont bold = new
            // WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
            WritableCellFormat normalFormat = new WritableCellFormat(
                    NumberFormats.TEXT);
            normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN,
                    jxl.format.Colour.BLACK);
            
            
            //设置字体;  
            WritableFont font = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);  
            WritableCellFormat normalFormat_total = new WritableCellFormat(
                    font);
            normalFormat_total.setBorder(Border.ALL, BorderLineStyle.THIN,
                    jxl.format.Colour.BLACK);
    
            try {
                
                // 创建可写入的Excel工作薄对象
                wwb = jxl.Workbook.createWorkbook(new File(targetFilePath), wb);
                WritableSheet ws = wwb.getSheet(0);
                
                Label cellRemark = new Label(0, remarkRowNumber, remark,
                        normalFormat);
                ws.addCell(cellRemark);
    
                int row = l.size();
                int columns = columnsLength;
                String[] ary = new String[120];
                
                for (int i = 0; i < row; i++) {
                    ary = l.get(i).split("\" + SEPARATOR);
                    for (int j = 0; j < columns; j++) {
                        
                        
                            Label cell = new Label(j, i + headInfoRows, ary[j],
                                    normalFormat);
                            ws.addCell(cell);
                    }
                    writeCount++;
                }
                wwb.write();
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if (wwb != null) {
                    wwb.close();
                }
    
            }
    
            return writeCount;
    
        }
    exportList为List<String>,生成方式为遍历每个对象并将所有属性以|串起来
            List<DetectorHistory> dfList = service.getList();   //获取对象集合
            
            List<String> exportList = new ArrayList<String>();
            StringBuffer sbList = new StringBuffer();
            if (dfList!=null&&dfList.size()>0) {
                for (DetectorHistory ele:dfList) {
                    sbList.delete(0, sbList.length());
              //加入|
    //加入属性
    ... exportList.add(sbList.toString()); } }
    controller层
            //模板所在文件夹路径
            String tempPath = req.getSession().getServletContext()
            .getRealPath(CommonValue.FileTemplatePath);
            //生成文件所在文件夹路径
    String exportFilePath = req.getSession().getServletContext()
            .getRealPath(CommonValue.ExportFilePath);
            //导出文件名
            String exportFileName = "";
            //模板文件名,事先生成好以及头文件情况
            String targetFileName = "ReportTmp_detectorHistory.xls";
            
            //生成的行数
            int operatorCount = 0; 
            
            JSONObject jsonObject = new JSONObject();
            try {
                // 文件导出
                if (exportList.size() > 0) {
                    //生成文件名
                    exportFileName = "detectorHistory" + CommonTool.getNowDateStr2()
                            + "." + targetFileName.split("\.")[1];
                    //利用模板生成Workbook
                    Workbook rw = jxl.Workbook.getWorkbook(new File(tempPath
                            + File.separator + targetFileName));
    
                    // 写入备注文件
                    String remarkInfo = "统计时间:" + CommonTool.getNowDateStr2() + "    金额单位:元";
                    
                    //rw为模板workbook,0为sheetnum,其次为导出文件路径,exportList为|分割属性的string对象集合,4为头的行数,14为列数,1为备注所在行(从0开始),remarkinfo为备注所在行的信息
                    operatorCount = ExcelHelper_ChargeSituation.exportExcelFromListNoTotal(rw,
                            0, exportFilePath + File.separator + exportFileName,
                            exportList, 4, 14, 1, remarkInfo);
    
                }
                
                jsonObject.put("operatorCount", operatorCount);  //返回操作条数
                jsonObject.put("exportFilePath", CommonValue.ExportFilePath
                        + File.separator + exportFileName);  //返回生成的文件路径
                
                if(jsonObject.get("operatorCount")!=null&&Integer.valueOf(jsonObject.get("operatorCount").toString())<=0)
                {//当生成内容条数为0时
                    jsonObject.put("rtnCode", "404");
                }else
                {
                    jsonObject.put("rtnCode", "0");
                }
            } catch (BiffException e) {
                e.printStackTrace();
            } catch (WriteException e) {
                e.printStackTrace();
            }finally{
                
            }
            
            res.resetBuffer();
            res.setContentType("text/html;charset=UTF-8");
            res.getOutputStream().write(jsonObject.toString().getBytes("utf-8"));
            res.getOutputStream().flush();
            return null; 
  • 相关阅读:
    HDU 5115 Dire Wolf (区间DP)
    HDU 4283 You Are the One(区间DP(最优出栈顺序))
    ZOJ 3469 Food Delivery(区间DP好题)
    LightOJ 1422 Halloween Costumes(区间DP)
    POJ 1651 Multiplication Puzzle(区间DP)
    NYOJ 石子合并(一)(区间DP)
    POJ 2955 Brackets(括号匹配一)
    POJ 1141 Brackets Sequence(括号匹配二)
    ZOJ 3537 Cake(凸包+区间DP)
    Graham求凸包模板
  • 原文地址:https://www.cnblogs.com/aeolian/p/9187658.html
Copyright © 2011-2022 走看看