zoukankan      html  css  js  c++  java
  • POI设置Excel单元格样式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:

    先获取工作薄对象:

    HSSFWorkbook wb = new HSSFWorkbook();

    HSSFSheet sheet = wb.createSheet();

    HSSFCellStyle cellStyle = wb.createCellStyle();

    一、设置背景色:

    cellStyle.setFillForegroundColor((short) 13);// 设置背景色
    cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

    二、设置边框:

      cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
      cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
      cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
      cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
      // 设置单元格边框颜色  
      cellStyle.setBottomBorderColor(HSSFColor.RED.index);  
      cellStyle.setTopBorderColor(HSSFColor.GREEN.index);  
      cellStyle.setLeftBorderColor(HSSFColor.BLUE.index); 
      设置单元格边框样式  
      CellStyle.BORDER_DOUBLE      双边线 
      CellStyle.BORDER_THIN        细边线  
      CellStyle.BORDER_MEDIUM      中等边线  
      CellStyle.BORDER_DASHED      虚线边线  
      CellStyle.BORDER_HAIR        小圆点虚线边线 
      CellStyle.BORDER_THICK       粗边线  

    三、设置居中:

    cellStyle.setAlignment(CellStyle.ALIGN_CENTER);//水平居中  
    cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//垂直居中  
    // 设置单元格内容水平对其方式  
    // HSSFCellStyle.ALIGN_CENTER       居中对齐  
    // HSSFCellStyle.ALIGN_LEFT         左对齐  
    // HSSFCellStyle.ALIGN_RIGHT        右对齐 
    // 设置单元格内容垂直对其方式 // HSSFCellStyle.VERTICAL_TOP 上对齐 // HSSFCellStyle.VERTICAL_CENTER 中对齐 // HSSFCellStyle.VERTICAL_BOTTOM 下对齐

    四、设置字体:

    HSSFFont font = wb.createFont();
    font.setFontName("黑体");
    font.setFontHeightInPoints((short) 13);//设置字体大小
    font.setItalic(true); // 设置字体为斜体字 
    font.setColor(Font.COLOR_RED); // 将字体设置为“红色”
    font.setUnderline(Font.U_DOUBLE); // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线) 
    // font.setStrikeout(true); // 是否添加删除线
    
    HSSFFont font2 = wb.createFont();
    font2.setFontName("宋体");
    font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
    font2.setFontHeightInPoints((short) 12);
    
    cellStyle.setFont(font);//选择需要用到的字体格式

    五、设置整列的样式

    sheet.setDefaultColumnStyle(short column, CellStyle style)

    六、设置自动换行:

    cellStyle.setWrapText(true);//设置自动换行

    七、合并单元格:

    //参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号
    Region region1 = new Region(0, (short) 0, 0, (short) 6);
    //此方法在POI3.8中已经被废弃,建议使用下面一个
    注意导入的jar包:import org.apache.poi.ss.util.CellRangeAddress
    //参数1:起始行 参数2:终止行 参数3:起始列号 参数4:终止列号 CellRangeAddress region1 = new CellRangeAddress(rowNumber, rowNumber, (short) 0, (short) 11); sheet.addMergedRegion(region1);

     八、设置行的高度

    在Excel中,每一行的高度是要求一致的,所以设置单元格的高度,其实就是设置行的高度,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。

    Row sizeRow = sheet.createRow(6);  
    
    sizeRow.setHeightInPoints(30); // 设置行的高度  
    //或者
    sizeRow.setHeight((short) (40*20)); // 设置行的高度

    九、设置和读取列宽

    SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。

    //第一个参数代表列id(从0开始),第2个参数代表宽度值
    sheet.setColumnWidth(0, 100*256); 
    //读取列宽
    int col1width = sheet1.GetColumnWidth(1);//参数列的序号

    十、设置默认的列宽和行高

    一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。

    //设置默认列宽和行高
    sheet.setDefaultColumnWidth(25);
    //sheet.setDefaultRowHeight((short) (40*20));
    sheet.setDefaultRowHeightInPoints(20);

    工具方法:

        // 设置列宽()
        public  static void setColumnWidth(HSSFSheet sheet, int colNum) {
            for (int i = 0; i < colNum; i++) {
                int v = 0;           
                v = Math.round(Float.parseFloat("20.0") * 267.5F);
                sheet.setColumnWidth(i, v);
            }
        }
        
        //设置行的字体和样式
        public void setCellStyle(HSSFWorkbook workbook,HSSFCell cell){
            // 设置样式
            HSSFCellStyle cellStyle = workbook.createCellStyle();
            // 设置字体居中
            cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);                 
            // 设置字体
            HSSFFont font = workbook.createFont();
            font.setFontName("宋体");        
            font.setFontHeightInPoints((short) 13);
            cellStyle.setFont(font);
            cell.setCellStyle(cellStyle);
        }                         

     参考:

      POI的API:

      http://tool.oschina.net/apidocs/apidoc?api=apache-POI

      http://www.bug315.com/article/6.htm

  • 相关阅读:
    前端常用插件收藏文章
    vue+ts修改父组件属性的写法。
    JS new date在IOS出现的问题
    js 和各种屏幕高度的写法
    react 配置ant时遇见的一个Error: Multiple configuration files found. Please remove one: – package.json#babel – .babelrc 解决方案
    vue 的sync用法
    VUE Right-hand side of ‘instanceof’ is not an object 解决方案
    记录一下navicat的快捷键
    什么是servlet(转)
    Java位运算在程序设计中的使用:位掩码(BitMask)
  • 原文地址:https://www.cnblogs.com/leilong/p/8313089.html
Copyright © 2011-2022 走看看