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(13);// 冻结   
    5.     // 设置列宽   
    6.     sheet.setColumnWidth(01000);   
    7.     sheet.setColumnWidth(13500);   
    8.     sheet.setColumnWidth(23500);   
    9.     sheet.setColumnWidth(36500);   
    10.     sheet.setColumnWidth(46500);   
    11.     sheet.setColumnWidth(56500);   
    12.     sheet.setColumnWidth(66500);   
    13.     sheet.setColumnWidth(72500);   
    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((short22);// 字体大小   
    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((short10);   
    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((short1);// 边框的大小   
    52.     columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);// 右边框的颜色   
    53.     columnHeadStyle.setBorderRight((short1);// 边框的大小   
    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((short10);   
    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((short1);   
    70.     style.setRightBorderColor(HSSFColor.BLACK.index);   
    71.     style.setBorderRight((short1);   
    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((short1);   
    83.     centerstyle.setRightBorderColor(HSSFColor.BLACK.index);   
    84.     centerstyle.setBorderRight((short1);   
    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((short900);   
    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(0007);   
    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(1207);   
    114.       sheet.addMergedRegion(range);   
    115.       // 第三行   
    116.       HSSFRow row2 = sheet.createRow(3);   
    117.       row2.setHeight((short750);   
    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() - 100);   
    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 + 107);   
    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.   } 
  • 相关阅读:
    973. K Closest Points to Origin
    919. Complete Binary Tree Inserter
    993. Cousins in Binary Tree
    20. Valid Parentheses
    141. Linked List Cycle
    912. Sort an Array
    各种排序方法总结
    509. Fibonacci Number
    374. Guess Number Higher or Lower
    238. Product of Array Except Self java solutions
  • 原文地址:https://www.cnblogs.com/java20131201/p/3476036.html
Copyright © 2011-2022 走看看