zoukankan      html  css  js  c++  java
  • poi给Excel单元格添加背景色,批注,下拉值

    poi依赖:

    <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>

    添加背景色:

    依次创建工作表--工作簿--行--单元格
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("sheet1");
    XSSFRow row = sheet.createRow(0);
    XSSFCell cell = row.createCell(i);
    创建样式对象,并设置背景(注意是foreground,不是background,两者是相反的)黄色,且是实心
    XSSFCellStyle cellStyle = workbook.createCellStyle();
    cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
    cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    设置样式
    cell.setCellStyle(cellStyle);

    添加批注:

    依次创建工作表--工作簿--行--单元格
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("sheet1");
    XSSFRow row = sheet.createRow(0);
    XSSFCell cell = row.createCell(i);
    依次创建画布--锚点--批注--设置批注内容
    XSSFDrawing drawingPatriarch = sheet.createDrawingPatriarch(); //画布(注意批注是一种图形,所以要用画布)
    XSSFClientAnchor xSSFClientAnchor = new XSSFClientAnchor(0, 0, 0, 0, 1, 0, 4, 4); //锚点,确定批注的位置(8个参数中:后4个是根据单元格定位,前4个是根据后4个定好的位置再按像素微调)
    XSSFComment cellComment = drawingPatriarch.createCellComment(xSSFClientAnchor); // 在锚点位置创建批注
    cellComment.setString("批注内容"); // 设置批注内容
    设置样式
    cell.setCellStyle(cellStyle);
    特别注意: 每个批注都是一个独立的画布,所以如果多个单元格都需要批注时,要为每一个批注都创建一套"画布,锚点,批注".

    添加下拉值:

    DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper();
    // 构造带下拉列表约束的下拉框
    DataValidationConstraint constraint = dataValidationHelper.createExplicitListConstraint(new String[]{"A","B","C","D"}); // 下拉值:A,B,C,D
    // 划定需要下拉的区域
    CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(0, 1000, 0, 0); // 0-1000行,0-0列
    // 绑定下拉框和区域,构造数据验证对象
    DataValidation validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList);
    // 为sheet添加此验证对象
    sheet.addValidationData(validation);

    总结:

    1. 使用POI可以在Java代码中操作Excel任意功能,同理在WORD,PPT中也可用

    2. 批注需要一个独立的画布,所以对于每个批注都要创建一个画布

  • 相关阅读:
    我经历的IT公司面试及离职感受(转)
    一个优异的经理人,碰到糟糕的企业,最后往往存在的还是那间糟糕的企业(转)
    Android TextView和EditText属性详解
    Android EditText控件行尾为表情时的BUG
    Android安全问题 抢先拦截短信
    Android安全问题 抢先开机启动
    Android安全问题 抢先接收广播
    Android安全问题 抢先接收广播
    Android 监听EditView中的文本改变事件
    Android EditText中插入图片并响应点击事件
  • 原文地址:https://www.cnblogs.com/wangxuejian/p/13660688.html
Copyright © 2011-2022 走看看