zoukankan      html  css  js  c++  java
  • HSSFWorkBooK用法 ---Excel表的导出和设置

    复制代码
      1 public ActionResult excelPrint() {   
      2     HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件   
      3     HSSFSheet sheet = workbook.createSheet();// 创建一个Excel的Sheet   
      4     sheet.createFreezePane(1, 3);// 冻结   
      5     // 设置列宽   
      6     sheet.setColumnWidth(0, 1000);   
      7     sheet.setColumnWidth(1, 3500);   
      8     sheet.setColumnWidth(2, 3500);   
      9     sheet.setColumnWidth(3, 6500);   
     10     sheet.setColumnWidth(4, 6500);   
     11     sheet.setColumnWidth(5, 6500);   
     12     sheet.setColumnWidth(6, 6500);   
     13     sheet.setColumnWidth(7, 2500);   
     14     // Sheet样式   
     15     HSSFCellStyle sheetStyle = workbook.createCellStyle();   
     16     // 背景色的设定   
     17     sheetStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);   
     18     // 前景色的设定   
     19     sheetStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);   
     20     // 填充模式   
     21     sheetStyle.setFillPattern(HSSFCellStyle.FINE_DOTS);   
     22     // 设置列的样式   
     23     for (int i = 0; i <= 14; i++) {   
     24       sheet.setDefaultColumnStyle((short) i, sheetStyle);   
     25     }   
     26     // 设置字体   
     27     HSSFFont headfont = workbook.createFont();   
     28     headfont.setFontName("黑体");   
     29     headfont.setFontHeightInPoints((short) 22);// 字体大小   
     30     headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗   
     31     // 另一个样式   
     32     HSSFCellStyle headstyle = workbook.createCellStyle();   
     33     headstyle.setFont(headfont);   
     34     headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中   
     35     headstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中   
     36     headstyle.setLocked(true);   
     37     headstyle.setWrapText(true);// 自动换行   
     38     // 另一个字体样式   
     39     HSSFFont columnHeadFont = workbook.createFont();   
     40     columnHeadFont.setFontName("宋体");   
     41     columnHeadFont.setFontHeightInPoints((short) 10);   
     42     columnHeadFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);   
     43     // 列头的样式   
     44     HSSFCellStyle columnHeadStyle = workbook.createCellStyle();   
     45     columnHeadStyle.setFont(columnHeadFont);   
     46     columnHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中   
     47     columnHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中   
     48     columnHeadStyle.setLocked(true);   
     49     columnHeadStyle.setWrapText(true);   
     50     columnHeadStyle.setLeftBorderColor(HSSFColor.BLACK.index);// 左边框的颜色   
     51     columnHeadStyle.setBorderLeft((short) 1);// 边框的大小   
     52     columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);// 右边框的颜色   
     53     columnHeadStyle.setBorderRight((short) 1);// 边框的大小   
     54     columnHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体   
     55     columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色   
     56     // 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式)   
     57     columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index);   
     58   
     59     HSSFFont font = workbook.createFont();   
     60     font.setFontName("宋体");   
     61     font.setFontHeightInPoints((short) 10);   
     62     // 普通单元格样式   
     63     HSSFCellStyle style = workbook.createCellStyle();   
     64     style.setFont(font);   
     65     style.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 左右居中   
     66     style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);// 上下居中   
     67     style.setWrapText(true);   
     68     style.setLeftBorderColor(HSSFColor.BLACK.index);   
     69     style.setBorderLeft((short) 1);   
     70     style.setRightBorderColor(HSSFColor.BLACK.index);   
     71     style.setBorderRight((short) 1);   
     72     style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体   
     73     style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.   
     74     style.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.   
     75     // 另一个样式   
     76     HSSFCellStyle centerstyle = workbook.createCellStyle();   
     77     centerstyle.setFont(font);   
     78     centerstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中   
     79     centerstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中   
     80     centerstyle.setWrapText(true);   
     81     centerstyle.setLeftBorderColor(HSSFColor.BLACK.index);   
     82     centerstyle.setBorderLeft((short) 1);   
     83     centerstyle.setRightBorderColor(HSSFColor.BLACK.index);   
     84     centerstyle.setBorderRight((short) 1);   
     85     centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体   
     86     centerstyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.   
     87     centerstyle.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.   
     88   
     89     try {   
     90       // 创建第一行   
     91       HSSFRow row0 = sheet.createRow(0);   
     92       // 设置行高   
     93       row0.setHeight((short) 900);   
     94       // 创建第一列   
     95       HSSFCell cell0 = row0.createCell(0);   
     96       cell0.setCellValue(new HSSFRichTextString("中非发展基金投资项目调度会工作落实情况对照表"));   
     97       cell0.setCellStyle(headstyle);   
     98       /**  
     99        * 合并单元格  
    100        *    第一个参数:第一个单元格的行数(从0开始)  
    101        *    第二个参数:第二个单元格的行数(从0开始)  
    102        *    第三个参数:第一个单元格的列数(从0开始)  
    103        *    第四个参数:第二个单元格的列数(从0开始)  
    104        */  
    105       CellRangeAddress range = new CellRangeAddress(0, 0, 0, 7);   
    106       sheet.addMergedRegion(range);   
    107       // 创建第二行   
    108       HSSFRow row1 = sheet.createRow(1);   
    109       HSSFCell cell1 = row1.createCell(0);   
    110       cell1.setCellValue(new HSSFRichTextString("本次会议时间:2009年8月31日       前次会议时间:2009年8月24日"));   
    111       cell1.setCellStyle(centerstyle);   
    112       // 合并单元格   
    113       range = new CellRangeAddress(1, 2, 0, 7);   
    114       sheet.addMergedRegion(range);   
    115       // 第三行   
    116       HSSFRow row2 = sheet.createRow(3);   
    117       row2.setHeight((short) 750);   
    118       HSSFCell cell = row2.createCell(0);   
    119       cell.setCellValue(new HSSFRichTextString("责任者"));   
    120       cell.setCellStyle(columnHeadStyle);   
    121       cell = row2.createCell(1);   
    122       cell.setCellValue(new HSSFRichTextString("成熟度排序"));   
    123       cell.setCellStyle(columnHeadStyle);   
    124       cell = row2.createCell(2);   
    125       cell.setCellValue(new HSSFRichTextString("事项"));   
    126       cell.setCellStyle(columnHeadStyle);   
    127       cell = row2.createCell(3);   
    128       cell.setCellValue(new HSSFRichTextString("前次会议要求/n/新项目的项目概要"));   
    129       cell.setCellStyle(columnHeadStyle);   
    130       cell = row2.createCell(4);   
    131       cell.setCellValue(new HSSFRichTextString("上周工作进展"));   
    132       cell.setCellStyle(columnHeadStyle);   
    133       cell = row2.createCell(5);   
    134       cell.setCellValue(new HSSFRichTextString("本周工作计划"));   
    135       cell.setCellStyle(columnHeadStyle);   
    136       cell = row2.createCell(6);   
    137       cell.setCellValue(new HSSFRichTextString("问题和建议"));   
    138       cell.setCellStyle(columnHeadStyle);   
    139       cell = row2.createCell(7);   
    140       cell.setCellValue(new HSSFRichTextString("备 注"));   
    141       cell.setCellStyle(columnHeadStyle);   
    142       // 访问数据库,得到数据集   
    143       List<DeitelVO> deitelVOList = getEntityManager().queryDeitelVOList();   
    144       int m = 4;   
    145       int k = 4;   
    146       for (int i = 0; i < deitelVOList.size(); i++) {   
    147         DeitelVO vo = deitelVOList.get(i);   
    148         String dname = vo.getDname();   
    149         List<Workinfo> workList = vo.getWorkInfoList();   
    150         HSSFRow row = sheet.createRow(m);   
    151         cell = row.createCell(0);   
    152         cell.setCellValue(new HSSFRichTextString(dname));   
    153         cell.setCellStyle(centerstyle);   
    154         // 合并单元格   
    155         range = new CellRangeAddress(m, m + workList.size() - 1, 0, 0);   
    156         sheet.addMergedRegion(range);   
    157         m = m + workList.size();   
    158   
    159         for (int j = 0; j < workList.size(); j++) {   
    160           Workinfo w = workList.get(j);   
    161           // 遍历数据集创建Excel的行   
    162           row = sheet.getRow(k + j);   
    163           if (null == row) {   
    164             row = sheet.createRow(k + j);   
    165           }   
    166           cell = row.createCell(1);   
    167           cell.setCellValue(w.getWnumber());   
    168           cell.setCellStyle(centerstyle);   
    169           cell = row.createCell(2);   
    170           cell.setCellValue(new HSSFRichTextString(w.getWitem()));   
    171           cell.setCellStyle(style);   
    172           cell = row.createCell(3);   
    173           cell.setCellValue(new HSSFRichTextString(w.getWmeting()));   
    174           cell.setCellStyle(style);   
    175           cell = row.createCell(4);   
    176           cell.setCellValue(new HSSFRichTextString(w.getWbweek()));   
    177           cell.setCellStyle(style);   
    178           cell = row.createCell(5);   
    179           cell.setCellValue(new HSSFRichTextString(w.getWtweek()));   
    180           cell.setCellStyle(style);   
    181           cell = row.createCell(6);   
    182           cell.setCellValue(new HSSFRichTextString(w.getWproblem()));   
    183           cell.setCellStyle(style);   
    184           cell = row.createCell(7);   
    185           cell.setCellValue(new HSSFRichTextString(w.getWremark()));   
    186           cell.setCellStyle(style);   
    187         }   
    188         k = k + workList.size();   
    189       }   
    190       // 列尾   
    191       int footRownumber = sheet.getLastRowNum();   
    192       HSSFRow footRow = sheet.createRow(footRownumber + 1);   
    193       HSSFCell footRowcell = footRow.createCell(0);   
    194       footRowcell.setCellValue(new HSSFRichTextString("                    审  定:XXX      审  核:XXX     汇  总:XX"));   
    195       footRowcell.setCellStyle(centerstyle);   
    196       range = new CellRangeAddress(footRownumber + 1, footRownumber + 1, 0, 7);   
    197       sheet.addMergedRegion(range);   
    198   
    199       HttpServletResponse response = getResponse();   
    200       HttpServletRequest request = getRequest();   
    201       String filename = "未命名.xls";//设置下载时客户端Excel的名称   
    202       // 请见:http://zmx.javaeye.com/blog/622529   
    203       filename = Util.encodeFilename(filename, request);   
    204       response.setContentType("application/vnd.ms-excel");   
    205       response.setHeader("Content-disposition", "attachment;filename=" + filename);   
    206       OutputStream ouputStream = response.getOutputStream();   
    207       workbook.write(ouputStream);   
    208       ouputStream.flush();   
    209       ouputStream.close();   
    210   
    211     } catch (Exception e) {   
    212       e.printStackTrace();   
    213     }   
    214     return null;   
    215   }  
    复制代码
  • 相关阅读:
    How To Verify TLS Options in Windows
    How to auto-generate a C# class file from a JSON string [closed]
    javascript-questions
    What is the difference between application server and web server?
    Manjaro Rust环境搭建
    Trojan
    50 年的软件开发经验带给我的 63 个启示
    对《GGX》shader的分析-卡通渲染-罪恶装备
    科学迷信
    Tokio,Rust异步编程实践之路
  • 原文地址:https://www.cnblogs.com/jpfss/p/9816240.html
Copyright © 2011-2022 走看看