J2SE - POI设置单元格样式

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:25   1381   0

一、设置字体

    // 设置字体属性   
    Font font = workbook.createFont();        // 创建字体对象   
    font.setItalic(true);                     // 设置字体倾斜   
    font.setColor(Font.COLOR_RED);            // 设置字体颜色   
    font.setFontHeightInPoints((short)22);    // 设置字体大小   
    font.setFontName("宋体");                  // 设置字体名称   
    font.setUnderline(Font.U_DOUBLE);         // 设置下划线(Font.U_SINGLE:单线;Font.U_DOUBLE:双线)  
    font.setBold(true);                       // 设置字体加粗
    font.setStrikeout(true);                  // 设置删除线   
    // 应用到单元格
    Row fontRow = sheet.createRow((short)0);            // 创建行对象
    Cell fontCell = fontRow.createCell(0);              // 创建单元格
    CellStyle fontStyle = workbook.createCellStyle();   // 创建单元格样式
    fontStyle.setFont(font);                            // 将字体应用到样式
    fontCell.setCellStyle(fontStyle);                   // 将样式应用到单元格
    fontCell.setCellValue("测试字体");                   // 测试

二、设置边框

    // 设置边框属性   
    CellStyle borderStyle = workbook.createCellStyle();    // 创建单元格样式对象
    borderStyle.setBorderBottom(BorderStyle.THICK);        // 设置下边框(DOUBLE:双线;THIN:细线) 
    borderStyle.setBorderTop(BorderStyle.DASHED);          // 设置上边框(MEDIUM:中等线;DASHED:虚线)
    borderStyle.setBorderLeft(BorderStyle.DOUBLE);         // 设置左边框(HAIR:圆点线;THICK:粗线)
    borderStyle.setBorderRight(BorderStyle.THIN);          // 设置右边框(旧版考虑:CellStyle.BORDER_THICK)
    borderStyle.setBottomBorderColor(HSSFColor.HSSFColorPredefined.RED.getIndex());    // 设置下边框颜色(通过HSSFColor的枚举类型获取索引) 
    borderStyle.setTopBorderColor(new XSSFColor(java.awt.Color.GREEN).getIndex());     // 设置上边框颜色(通过XSSFColor的构造方法获取索引)
    // 应用到单元格
    Row borderRow = sheet.createRow(2);              // 创建行对象
    Cell borderCell = borderRow.createCell(2);       // 创建单元格
    borderCell.setCellStyle(borderStyle);            // 将边框应用到单元格
    borderCell.setCellValue("测试边框");              // 测试

三、设置对齐

    // 设置对齐属性   
    CellStyle alignStyle = workbook.createCellStyle();           // 创建单元格样式对象   
    alignStyle.setAlignment(HorizontalAlignment.CENTER);         // 设置水平对齐(CENTER:居中;LEFT:左;RIGHT:右。旧版考虑:XSSFCellStyle.ALIGN_RIGHT)
    alignStyle.setVerticalAlignment(VerticalAlignment.CENTER);   // 设置垂直对齐(CENTER:居中;TOP:上;BOTTOM:下;旧版考虑:XSSFCellStyle.VERTICAL_CENTER)   
    // 应用到单元格
    Row alignRow = sheet.createRow(4);            // 创建行对象
    Cell alignCell = alignRow.createCell(4);      // 创建单元格
    alignCell.setCellStyle(alignStyle);           // 将对齐应用到单元格
    alignCell.setCellValue("测试对齐");            // 测试

四、自动对齐

    // 设置换行属性   
    CellStyle wrapStyle = workbook.createCellStyle();    // 创建单元格样式对象   
    wrapStyle.setWrapText(true);                         // 设置单元格自动换行   
    // 应用到单元格
    Row wrapRow = sheet.createRow(6);                 // 创建行对象
    Cell wrapCell = wrapRow.createCell(6);            // 创建单元格
    wrapCell.setCellStyle(wrapStyle);                 // 将对齐应用到单元格
    wrapCell.setCellValue("测试单元格自动换行");         // 测试

五、影响范围

    // 获取默认样式,修改将影响所有单元格
    CellStyle cs = cell.getCellStyle();
    // 创建新的样式,只影响被设置的单元格
    CellStyle cs = workbook.createCellStyle();

六、背景色和背景图案

    /**
     *  只设置背景色参数,是没有效果的,背景色只有在和前景色组合形成图案时有效
     * 设置前景色必须同时设置填充样式,样式为无缝铺满时即为常规需求下的背景色效果
     * 设置图案时,前景色的设置要在背景色之前,否则背景色的设置将失效并使用黑色
     */
     
    // 设置背景颜色
    CellStyle backStyle = workbook.createCellStyle();    // 创建单元格样式对象
    backStyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.RED.getIndex());  // 设置前景色
    backStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);  // 前景色平铺方式(SOLID_FOREGROUND:无缝铺满;SQUARES:网格;BRICKS:砖块)
    // 应用到单元格
    Row backRow = sheet.createRow(8);                 // 创建行对象
    Cell backCell = backRow.createCell(8);            // 创建单元格
    backCell.setCellStyle(backStyle);                 // 将对齐应用到单元格
    backCell.setCellValue("测试背景色");              // 测试
    
    // 设置图案背景
    CellStyle backStyle = workbook.createCellStyle();    // 创建单元格样式对象
    backStyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.RED.getIndex());  // 设置前景色
    backStyle.setFillBackgroundColor(IndexedColors.GREEN.getIndex());  // 设置背景色
    backStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);  // 前景色平铺方式(SOLID_FOREGROUND:无缝铺满;SQUARES:网格;BRICKS:砖块)
    // 应用到单元格
    Row backRow = sheet.createRow(8);                 // 创建行对象
    Cell backCell = backRow.createCell(8);            // 创建单元格
    backCell.setCellStyle(backStyle);                 // 将对齐应用到单元格
    backCell.setCellValue("测试图案背景");            // 测试

附录

 <dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.17</version>
 </dependency>
 <dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>3.17</version>
 </dependency>
 <dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml-schemas</artifactId>
  <version>3.17</version>
 </dependency>
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFColor;

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP