关于生成xml表格: HSSFWorkbook的用法

来源:互联网 发布:买了域名怎么建网站 编辑:程序博客网 时间:2024/06/05 11:22

Java代码

  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.iteye.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.   }   

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 房贷扣款日忘存钱了怎么办 农业银行卡输密码次数超限载怎么办 农业银行卡丢了不知道卡号怎么办 银行卡短信扣费失败怎么恢复怎么办 歌华有线遥控器点了tvav怎么办 一级注册结构延续注册晚了怎么办 在京东买的黄金项链买贵了怎么办 京东上面买的商品不符合实际怎么办 在京东买东西卖家迟迟不发货怎么办 淘宝商家买的货一直不到怎么办 国美买的格力空调发票丢了怎么办 国美实体店发票丢了怎么办 我在苏宁买的冰箱发票丢了怎么办 信用卡家庭电单位电话换了怎么办 常住户囗和实际住址没房子怎么办 退货淘宝极速退款 卖家拒收怎么办 淘宝退货极速退款后卖家拒收怎么办 蘑菇街付款成功怎么申请退款怎么办 淘宝上拍错地址联系卖家不管怎么办 收到货想退款卖家不同意怎么办 小米小店复合通过qq群怎么办 买了火车票在订单上查不到怎么办 用支付宝付款扣款没成功怎么办 在京东买东西只收到空盒子怎么办 魅族移动数据是灰色的怎么办? 魅族手机账号密码忘记了怎么办视频 淘宝购物退货把单号写错了怎么办 天猫想退货商家不给退货地址怎么办 天天爱消除四星宠物等级已满怎么办 店不干了店里面的财神怎么办 微信显示登陆注册语言打不开怎么办 三星手机解锁以后突然不量怎么办 耐克、阿迪品牌鉴定买到假货怎么办 小米4c盒子不支持有线连接怎么办 一个手机号绑着两个小米账号怎么办 小米5s手机听筒声音小怎么办 淘宝上买手机买到翻新怎么办 小米6用久了很卡怎么办 淘宝商家发错误的退货地址怎么办 买苹果手机时查到了翻新机该怎么办 荣耀9青春版玩王者卡怎么办