zoukankan      html  css  js  c++  java
  • poi的合并单元格和冻结行列

      1         //创建工作薄(excel)
      2         Workbook wb = new HSSFWorkbook();
      3         //创建sheet
      4         Sheet createSheet = wb.createSheet("sheet1");
      5 
      6         //设置标题字体
      7         Font fontTitle = wb.createFont();
      8         fontTitle.setFontHeightInPoints((short) 18); //字体大小
      9         fontTitle.setColor(HSSFColor.BLACK.index); //字体颜色
     10         fontTitle.setFontName("宋体"); //字体
     11         fontTitle.setBoldweight(Font.BOLDWEIGHT_BOLD); //粗体显示
     12         //font.setItalic(true); //是否使用斜体
     13         //font.setStrikeout(true); //是否使用划线
     14 
     15         //设置标题单元格类型
     16         CellStyle cellStyleTitle = wb.createCellStyle();
     17         cellStyleTitle.setFont(fontTitle);
     18         cellStyleTitle.setFillForegroundColor(IndexedColors.LIME.getIndex());
     19         cellStyleTitle.setFillPattern(CellStyle.SOLID_FOREGROUND);
     20         cellStyleTitle.setAlignment(CellStyle.ALIGN_CENTER); //水平布局:居中
     21         cellStyleTitle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
     22         cellStyleTitle.setWrapText(true);//设置自动换行
     23         
     24         cellStyleTitle.setBorderBottom(CellStyle.BORDER_THIN); //下边框  
     25         cellStyleTitle.setBorderLeft(CellStyle.BORDER_THIN);//左边框   
     26         cellStyleTitle.setBorderTop(CellStyle.BORDER_THIN);//上边框    
     27         cellStyleTitle.setBorderRight(CellStyle.BORDER_THIN);//右边框   
     28         cellStyleTitle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
     29         cellStyleTitle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
     30         cellStyleTitle.setTopBorderColor(IndexedColors.BLACK.getIndex());
     31         cellStyleTitle.setRightBorderColor(IndexedColors.BLACK.getIndex());
     32 
     33         
     34         //创建合并单元格  ---begin
     35         CellRangeAddress region = new CellRangeAddress(0, 0, 1, 3);// 下标从0开始 起始行号,终止行号, 起始列号,终止列号
     36         CellRangeAddress region2 = new CellRangeAddress(1, 2, 0, 0);// 起始行号,终止行号, 起始列号,终止列号
     37         CellRangeAddress region3 = new CellRangeAddress(1, 1, 1, 3);// 起始行号,终止行号, 起始列号,终止列号
     38         //在sheet里增加合并单元格  
     39         createSheet.addMergedRegion(region);
     40         createSheet.addMergedRegion(region2);
     41         createSheet.addMergedRegion(region3);
     42         
     43         // -----------填充第一行数据-------------
     44         Row rowTitle = createSheet.createRow(0);
     45         Cell cellTitle = rowTitle.createCell(0);
     46         cellTitle.setCellStyle(cellStyleTitle);
     47         cellTitle.setCellValue("");// 设置标题内容
     48         Cell cellTitle1_1 = rowTitle.createCell(1);
     49         cellTitle1_1.setCellStyle(cellStyleTitle);
     50         cellTitle1_1.setCellValue(dateStr);// 设置标题内容
     51         // -----------填充第二行数据-------------
     52         Row rowTitle1 = createSheet.createRow(1);
     53         Cell cellTitle1 = rowTitle1.createCell(0);
     54         cellTitle1.setCellStyle(cellStyleTitle);
     55         cellTitle1.setCellValue("店名");//  设置内容
     56         Cell cellTitle11 = rowTitle1.createCell(1);
     57         cellTitle11.setCellStyle(cellStyleTitle);
     58         cellTitle11.setCellValue("王总");//
     59         Cell cellTitle111 = rowTitle1.createCell(2);
     60         cellTitle111.setCellStyle(cellStyleTitle);
     61         cellTitle111.setCellValue("");// 虽然这个单元格不可以不设置,但是要给它设置样式,所以也写了
     62         Cell cellTitle1111 = rowTitle1.createCell(3);
     63         cellTitle1111.setCellStyle(cellStyleTitle);
     64         cellTitle1111.setCellValue("");// 虽然这个单元格不可以不设置,但是要给它设置样式,所以也写了
     65         // -----------填充第三行数据-------------
     66         Row rowTitle2 = createSheet.createRow(2);
     67         Cell cellTitle2 = rowTitle2.createCell(1);
     68         cellTitle2.setCellStyle(cellStyleTitle);
     69         cellTitle2.setCellValue("装修费");//  设置内容
     70         Cell cellTitle22 = rowTitle2.createCell(2);
     71         cellTitle22.setCellStyle(cellStyleTitle);
     72         cellTitle22.setCellValue("加盟费");//  设置内容
     73         Cell cellTitle222 = rowTitle2.createCell(3);
     74         cellTitle222.setCellStyle(cellStyleTitle);
     75         cellTitle222.setCellValue("人员培训费");//  设置内容 
     76         // 合并单元格 ----end
     77         // 第四行数据留着下面写
     78 
     79         //设置表头字体
     80         Font fontHead = wb.createFont();
     81         fontHead.setFontHeightInPoints((short) 14); //字体大小
     82         fontHead.setColor(Font.COLOR_NORMAL); //字体颜色
     83         fontHead.setFontName("Microsoft Sans Serif"); //字体
     84         fontHead.setBoldweight(Font.BOLDWEIGHT_BOLD); //粗体显示
     85         //font.setItalic(true); //是否使用斜体
     86         //font.setStrikeout(true); //是否使用划线
     87 
     88         //设置表头单元格类型
     89         CellStyle cellStyleHead = wb.createCellStyle();
     90         cellStyleHead.setFont(fontHead);
     91         cellStyleHead.setAlignment(CellStyle.ALIGN_CENTER); //水平布局:居中
     92         cellStyleHead.setFillForegroundColor(IndexedColors.LIME.getIndex());
     93         cellStyleHead.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
     94         cellStyleHead.setWrapText(true);//设置自动换行
     95 
     96         cellStyleHead.setBorderBottom(CellStyle.BORDER_THIN); //下边框  
     97         cellStyleHead.setBorderLeft(CellStyle.BORDER_THIN);//左边框   
     98         cellStyleHead.setBorderTop(CellStyle.BORDER_THIN);//上边框    
     99         cellStyleHead.setBorderRight(CellStyle.BORDER_THIN);//右边框   
    100         cellStyleHead.setBottomBorderColor(IndexedColors.BLACK.getIndex());
    101         cellStyleHead.setLeftBorderColor(IndexedColors.BLACK.getIndex());
    102         cellStyleHead.setTopBorderColor(IndexedColors.BLACK.getIndex());
    103         cellStyleHead.setRightBorderColor(IndexedColors.BLACK.getIndex());
    104 
    105         //创建第一行,标题
    106         Row row = createSheet.createRow(3);
    107         String[] cellHead = {"", "","", ""};
    108         // 设置列宽
    109         double[] titleWidth = {10, 24, 24, 24};
    110         for (int i = 0; i < cellHead.length; i++) {
    111             Cell createCell = row.createCell(i);
    112             createCell.setCellValue(cellHead[i]);
    113             createCell.setCellStyle(cellStyleHead);
    114         }
    115         
    116 
    117         //设置内容字体
    118         Font fontData = wb.createFont();
    119         fontData.setFontHeightInPoints((short) 14); //字体大小
    120         fontData.setColor(Font.COLOR_NORMAL); //字体颜色
    121         fontData.setFontName("Microsoft Sans Serif"); //字体
    122         //font.setBoldweight(Font.BOLDWEIGHT_BOLD); //粗体显示
    123         //font.setItalic(true); //是否使用斜体
    124         //font.setStrikeout(true); //是否使用划线
    125 
    126         //设置内容单元格类型
    127         CellStyle cellStyleDataOdd = wb.createCellStyle();
    128         cellStyleDataOdd.setFont(fontData);
    129         cellStyleDataOdd.setFillPattern(CellStyle.SOLID_FOREGROUND);
    130         cellStyleDataOdd.setAlignment(CellStyle.ALIGN_CENTER); //水平布局:居中
    131         cellStyleDataOdd.setWrapText(true);
    132 
    133         cellStyleDataOdd.setBorderBottom(CellStyle.BORDER_THIN); //下边框
    134         cellStyleDataOdd.setBorderLeft(CellStyle.BORDER_THIN);//左边框
    135         cellStyleDataOdd.setBorderTop(CellStyle.BORDER_THIN);//上边框
    136         cellStyleDataOdd.setBorderRight(CellStyle.BORDER_THIN);//右边框
    137         cellStyleDataOdd.setBottomBorderColor(IndexedColors.BLACK.getIndex());
    138         cellStyleDataOdd.setLeftBorderColor(IndexedColors.BLACK.getIndex());
    139         cellStyleDataOdd.setTopBorderColor(IndexedColors.BLACK.getIndex());
    140         cellStyleDataOdd.setRightBorderColor(IndexedColors.BLACK.getIndex());
    141 
    142         try {
    143             int no = 1;
    144             for (int i = 0; i < datas.length(); i++) {
    145                 JSONObject dayData = datas.getJSONObject(i);
    146                 String date = dayData.optString("date");
    147                 JSONArray detail = dayData.getJSONArray("detail");
    148                 
    149                 for (int k = 0; k < detail.length(); k++) {
    150                     JSONObject ss = detail.getJSONObject(k);
    151                     
    152                     row = createSheet.createRow(k + 4);
    153                     int j = 0;
    154                     // 店名
    155                     Cell cell1 = row.createCell(j++);
    156                     cell1.setCellValue(ss.optString("xxxxx"));
    157                     cell1.setCellStyle(cellStyleDataOdd);
    158                     // 装修费
    159                     Cell cell2 = row.createCell(j++);
    160                     cell2.setCellValue(ss.optString("xxxxx"));
    161                     cell2.setCellStyle(cellStyleDataOdd);
    162                     // 加盟费
    163                     Cell cell7 = row.createCell(j++);
    164                     cell7.setCellValue(ss.optString("xxxxxx"));
    165                     cell7.setCellStyle(cellStyleDataOdd);
    166                     // 人员培训费
    167                     Cell cellH = row.createCell(j++);
    168                     cellH.setCellValue(ss.optString("xxxxxx"));
    169                     cellH.setCellStyle(cellStyleDataOdd);
    170                 }
    171             }
    172                 
    173         } catch (JSONException e) {
    174             e.printStackTrace();
    175         }
    176         
    177         // 设置列宽
    178         for (int i = 0; i < titleWidth.length; i++) {
    179              createSheet.setColumnWidth((short) i, (short) titleWidth[i] * 256);
    180         }
    181         
    182         // 设置上面四行冻结
    183         createSheet.createFreezePane( 0, 4, 1, 4); // 前两个参数是你要用来拆分的列数和行数。后两个参数是下面窗口的可见象限,其中第三个参数是右边区域可见的左边列数,第四个参数是下面区域可见的首行
    184         
  • 相关阅读:
    JavaScript中双叹号“!!”作用
    JavaScript两个变量的值交换的多种方式
    自定义npm包——typeScript版本
    自定义npm包的创建、发布、更新和撤销
    vuex概念总结及简单使用实例
    详解javascript: void(0);
    面向对象的CSS
    vue指令概览
    实现水平居中的办法
    C#分块下载文件
  • 原文地址:https://www.cnblogs.com/shamo89/p/7722057.html
Copyright © 2011-2022 走看看