`

POI HSSFSTYLE

阅读更多

本文为收藏备查学习之用,并向原作者致敬:)

原帖地址为: http://publishblog.blogchina.com/blog/tb.b?diaryID=2432493

正文内容:

/**
  * 生成Excel表,可以指定行的高度以及对内容相同的单元格进行合并,并在超出打印范围时进行换页。
  * 
  */
 public void creatSheet(Object[] listdate,String excelFileOut,String title,String[] filed,List heigths)
 {
  try
  {
   String titles = title;
   String[] fileds = filed;
   Object[] list = listdate;
   List rh = heigths;
   HSSFWorkbook workbook = new HSSFWorkbook();
   int usedNumber = 0;
   //for(int isheet = 0;isheet < 2;isheet++) //暂时设为1,需确定其数值。
   while(list.length - usedNumber > 0)
   {
    HSSFSheet sheet = workbook.createSheet();
    int heiTotal = 0;
    //workbook.setSheetName(0,"变电一次部分",(short)1); 需传入专业组信息.
    //workbook.setSheetName(0, "利用状況表", HSSFWorkbook.ENCODING_UTF_16);
    //设置单元格宽度
    for(int clumnumber = 0;clumnumber < fileds.length;clumnumber++)
    {
     sheet.setColumnWidth((short)clumnumber,(short)((fileds[clumnumber].length() * 2) * 256));
    }
    //********************************************************************************/
    //定义title行的格式
    //System.out.println((short)((fileds.length) / 3));
    HSSFRow titlerow = sheet.createRow((short)0);
    HSSFCellStyle titlestyle = workbook.createCellStyle();
    HSSFFont titlefont = workbook.createFont();
    titlefont.setFontHeightInPoints((short)18);
    titlefont.setFontName("黑体");
    titlefont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    titlestyle.setFont(titlefont);
    //titlestyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    //titlestyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    HSSFCell titlecell = titlerow.createCell((short)((fileds.length) / 3));
    titlecell.setCellStyle(titlestyle);
    titlecell.setEncoding(HSSFCell.ENCODING_UTF_16);
    titlecell.setCellValue(titles);
    //定义第二行格�?
    //sheet.addMergedRegion(new Region(1,(short)4,1,(short)6));
    HSSFRow row2 = sheet.createRow((short)1);
    HSSFCellStyle row2style = workbook.createCellStyle();
    HSSFFont row2font = workbook.createFont();
    row2font.setFontHeightInPoints((short)12);
    row2font.setFontName("仿宋_GB2312");
    //字体加粗
    row2font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    row2style.setFont(row2font);
    //设定样式的的背景颜色填充
    row2style.setFillBackgroundColor(HSSFCellStyle.NO_FILL);
    row2style.setFillPattern(HSSFCellStyle.FINE_DOTS);
    //居中对齐
    row2style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    row2style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    //设定单元个背景颜�?
    row2style.setFillBackgroundColor(HSSFColor.GREY_40_PERCENT.index);
    //设置单元格显示颜�?
    row2style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
    row2style.setFont(row2font);
    row2style.setAlignment((short)2);//设置居中
    row2style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边�
    row2style.setBorderLeft(HSSFCellStyle.BORDER_THIN); //左边�
    row2style.setBorderRight(HSSFCellStyle.BORDER_THIN); //右边�
    row2style.setBorderTop(HSSFCellStyle.BORDER_THIN); //上边�
    //设置数据域单元格格式
    HSSFCellStyle datastyle = workbook.createCellStyle();
    HSSFFont datafont = workbook.createFont();
    datafont.setFontHeightInPoints((short)10);
    datafont.setFontName("仿宋_GB2312");
    //数据域边缘线加暗色.
    datastyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边�
    datastyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); //左边�
    datastyle.setBorderRight(HSSFCellStyle.BORDER_THIN); //右边�
    datastyle.setBorderTop(HSSFCellStyle.BORDER_THIN); //上边�
    datastyle.setFont(datafont);
    datastyle.setWrapText(true);//文本区域随内容多少自动调整
    datastyle.setVerticalAlignment((short)1);//设置垂直居中
    datastyle.setAlignment((short)2);//设置水平居中
    //style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    //style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    for(int j = 0;j < fileds.length;j++)
    {
     HSSFCell row2cell = row2.createCell((short)j);
     row2cell.setCellStyle(row2style);
     row2cell.setEncoding(HSSFCell.ENCODING_UTF_16);
     row2cell.setCellValue(fileds[j]);
    }
  
    int tag = 0;
    for(int i = 0;i + usedNumber < list.length;i++)
    {
     int number = Integer.parseInt((String)rh.get(i + usedNumber));
     //累计高度,在大于指定值时换页.
     heiTotal = heiTotal + number;
     //判断是否换页,用break语句跳出。
     if(heiTotal >= 55)
     {
      break;
     }
     List rows = (List)list[i + usedNumber]; //此处须加累计值,因为是多页。
     tag++;
     HSSFRow row = sheet.createRow((short)i + 2);
     row.setHeight((short)(number * 256));//在此设置行的高度 需传入参数序列
     for(int k = 0;k < rows.size();k++)
     {
      HSSFCell cell = row.createCell((short)k);
      //cell.setCellType(HSSFCell.CELL_TYPE_STRING);
      cell.setCellStyle(datastyle);
      cell.setEncoding(HSSFCell.ENCODING_UTF_16);
      cell.setCellValue((String)rows.get(k));
     }
    }
    //********************************************************************************/
    //********************************************************************************/
    for(int i = 0;i + usedNumber < list.length - 1;i++)
    {
     List rowfr = (List)list[i + usedNumber];
     List rowbh = (List)list[i + 1 + usedNumber];
     if(i < tag - 1)
     {
      for(int j = 0;j < rowfr.size();j++)
      {
       //System.out.println((String)rowfr.get(j));
       //System.out.println((String)rowbh.get(j));
       if(rowfr.get(j).equals(rowbh.get(j)) && ((String)rowfr.get(j) != "") && ((String)rowbh.get(j) != "") && ((String)rowfr.get(j) != null) && ((String)rowbh.get(j) != null))
       {
        //对内容重复的单元格进行合并
        sheet.addMergedRegion(new Region(i + 2,(short)j,i + 3,(short)j));
       }
      }
     }
    }
    usedNumber = usedNumber + tag;
    //********************************************************************************/
   }
   //   新建一输出文件流
   FileOutputStream fOut = new FileOutputStream(excelFileOut);
   //   把相应的Excel 工作簿存盘
   workbook.write(fOut);
   fOut.flush();
   //   操作结束,关闭文件
   fOut.close();
   System.out.println("文件生成...");
  }
  catch(Exception e)
  {
   System.out.println("Err: " + e);
  }
 }

分享到:
评论

相关推荐

    POI导出 POI导出 POI导出

    POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...

    poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad

    标题中的"poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad"提及的是Apache POI项目中的多个关键组件和目录结构。Apache POI是一个开源的Java库,专门用于读写Microsoft Office...

    POI poi相关所有jar包 poi jar包 poi最全jar包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel(.xlsx、.xls)、Word(.doc、.docx)和PowerPoint(.ppt、.pptx)。这个压缩包包含了POI项目中所有必要的jar包,总计十二个,确保了...

    poi的所有jar包,poi, poi-ooxml,poi-ooxml-schemas的各个版本jar

    这个压缩包包含了POI项目的几个核心组件的jar文件,包括基础的`poi`库,以及支持Open XML格式(OOXML)的`poi-ooxml`和`poi-ooxml-schemas`。这些jar包在Java开发中非常有用,尤其是当你需要在应用程序中读取、写入...

    poi-3.17 poi-3.16

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。POI 提供了一套 Java API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件。标题中的"poi-3.17 poi-...

    poi-3.9、poi-ooxml-3.9、poi-ooxml-schemas-3.9

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。在Java编程环境中,Apache POI 提供了API,让开发者能够方便地读取、写入和修改这些文件。标题提到的"poi-3.9、poi-...

    POI中文帮助文档_POI_

    Apache POI是一个开源项目,主要用于读取和写入Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。这个“POI中文帮助文档”提供了全面的指南,帮助开发者理解和...

    poi jar包 官网下载 最新poi官网资源

    关于poi ,Apache在今年,也就是在2017年9月15日 正式发布了POI 3.17版本, Apache POI团队对于3.17版本进行了一些功能的修复。主要是几个新的功能区域和许多错误修复。 POI 3.17是支持Java 6的最后一个版本。下一个...

    百度poi,高德poi数据数据免费下载

    在IT行业中,POI(Point of Interest)是一个重要的概念,主要指地图上的兴趣点,例如商业场所、公共服务设施、交通站点等。百度POI和高德POI是两大知名的中国地图服务提供商,它们提供了丰富的地理信息数据,为...

    poi-3.10.1上传组件jar包 po poi-ooxml poi-ooxml-schemas

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。这个"poi-3.10.1上传组件jar包"包含了处理这些文档所需的Java库,使得开发者可以在Java应用中创建、读取和修改Office...

    poi excel poi excel poi excel

    ### POI Excel知识点详解 #### 一、Jakarta POI简介与Apache POI的作用 Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来处理 Microsoft Office 文件格式,特别是针对 Excel(`.xls` 和 `.xlsx`)...

    java对Excel的jar包poi-3.15,poi-3.16,poi-3.17

    Java中的Apache POI库是用于处理Microsoft Office格式文件的强大工具,特别是Excel(.xls和.xlsx)文件。在Java编程环境中,POI库提供了一种高效且灵活的方式来读取、写入和修改Excel文档。在提供的压缩包中,我们有...

    poi3.17jar包下载

    poi3.17jar包下载,支持excel2003,excel2007,亲测可用。poi3.17jar包下载,支持excel2003,excel2007,亲测可用。poi3.17jar包下载,支持excel2003,excel2007,亲测可用。poi3.17jar包下载,支持excel2003,excel2007...

    高德2017poi 高德历史poi 2017科研poi

    poi|信息点|高德poiPOI是“Point of Interest”的缩写,中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、 一个商铺、一个邮筒、一个公交站等。 高德POI又名高德兴趣点,来源于高德地图,...

    poi-3.16.jar,poi-ooxml-3.16.jar,poi-ooxml-schemas-3.16.jar

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,POI 提供了丰富的API,使得开发者可以方便地创建、读取和修改这些文件。这里提到的三个jar文件是...

    小软件POI数据下载神器

    今天分享一个能够实现零代码获取高德地图POI数据的工具。 该工具当前版本号为v1.3,主要功能特点包括: 支持通过拉框多边形以及点选省或地级市的方式输入POI数据下载范围 支持多选输入POI数据类型,例如酒店住宿、...

    poi-5.0.0.jar中文文档.zip

    poi-***.jar中文文档.zip,java,poi-***.jar,org.apache.poi,poi,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-***...

    poi-ooxml-schemas-3.8,poi-3.8,poi-ooxml jar包合集

    标题中的"poi-ooxml-schemas-3.8,poi-3.8,poi-ooxml jar包合集"指的是Apache POI项目中用于处理Microsoft Office格式文件的Java库,特别是针对Excel(XLS和XLSX)文档的处理。Apache POI是一个流行的开源库,允许...

    poi 的jar 包

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。POI 提供了一套 Java API,使得开发者可以在Java应用程序中读取、写入和修改这些文件。这里的"poi 的jar 包"指的是...

Global site tag (gtag.js) - Google Analytics