合并单元格设置边框RegionUtil

来源:互联网 发布:美国大学学生会 知乎 编辑:程序博客网 时间:2024/06/04 19:46

一.概述

为合并单元格的合并区域设置边框,自己编码觉得有些繁琐多余,POI提供了方法

二.概述

1.位置:org.apache.poi.ss.util.RegionUtil
2.方法

3.源码:
// poi 3.15package org.apache.poi.ss.util;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;/** * Various utility functions that make working with a region of cells easier. */public final class RegionUtil {    private RegionUtil() {        // no instances of this class    }    /**     * For setting the same property on many cells to the same value     */    private static final class CellPropertySetter {        private final String _propertyName;        private final Short _propertyValue;        public CellPropertySetter(String propertyName, int value) {            _propertyName = propertyName;            _propertyValue = Short.valueOf((short) value);        }        public void setProperty(Row row, int column) {            Cell cell = CellUtil.getCell(row, column);            CellUtil.setCellStyleProperty(cell, _propertyName, _propertyValue);        }    }    /**     * Sets the left border for a region of cells by manipulating the cell style of the individual     * cells on the left     *      * @param border The new border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setBorderLeft(int, CellRangeAddress, Sheet)}.     */    public static void setBorderLeft(int border, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setBorderLeft(border, region, sheet);    }    /**     * Sets the left border for a region of cells by manipulating the cell style of the individual     * cells on the left     *      * @param border The new border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setBorderLeft(int border, CellRangeAddress region, Sheet sheet) {        int rowStart = region.getFirstRow();        int rowEnd = region.getLastRow();        int column = region.getFirstColumn();        CellPropertySetter cps = new CellPropertySetter(CellUtil.BORDER_LEFT, border);        for (int i = rowStart; i <= rowEnd; i++) {            cps.setProperty(CellUtil.getRow(i, sheet), column);        }    }    /**     * Sets the left border color for a region of cells by manipulating the cell style of the individual     * cells on the left     *      * @param color The color of the border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setLeftBorderColor(int, CellRangeAddress, Sheet)}.     */    public static void setLeftBorderColor(int color, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setLeftBorderColor(color, region, sheet);    }    /**     * Sets the left border color for a region of cells by manipulating the cell style of the individual     * cells on the left     *      * @param color The color of the border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setLeftBorderColor(int color, CellRangeAddress region, Sheet sheet) {        int rowStart = region.getFirstRow();        int rowEnd = region.getLastRow();        int column = region.getFirstColumn();        CellPropertySetter cps = new CellPropertySetter(CellUtil.LEFT_BORDER_COLOR, color);        for (int i = rowStart; i <= rowEnd; i++) {            cps.setProperty(CellUtil.getRow(i, sheet), column);        }    }    /**     * Sets the right border for a region of cells by manipulating the cell style of the individual     * cells on the right     *      * @param border The new border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setBorderRight(int, CellRangeAddress, Sheet)}.     */    public static void setBorderRight(int border, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setBorderRight(border, region, sheet);    }    /**     * Sets the right border for a region of cells by manipulating the cell style of the individual     * cells on the right     *      * @param border The new border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setBorderRight(int border, CellRangeAddress region, Sheet sheet) {        int rowStart = region.getFirstRow();        int rowEnd = region.getLastRow();        int column = region.getLastColumn();        CellPropertySetter cps = new CellPropertySetter(CellUtil.BORDER_RIGHT, border);        for (int i = rowStart; i <= rowEnd; i++) {            cps.setProperty(CellUtil.getRow(i, sheet), column);        }    }    /**     * Sets the right border color for a region of cells by manipulating the cell style of the individual     * cells on the right     *      * @param color The color of the border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setRightBorderColor(int, CellRangeAddress, Sheet)}.     */    public static void setRightBorderColor(int color, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setRightBorderColor(color, region, sheet);    }    /**     * Sets the right border color for a region of cells by manipulating the cell style of the individual     * cells on the right     *      * @param color The color of the border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setRightBorderColor(int color, CellRangeAddress region, Sheet sheet) {        int rowStart = region.getFirstRow();        int rowEnd = region.getLastRow();        int column = region.getLastColumn();        CellPropertySetter cps = new CellPropertySetter(CellUtil.RIGHT_BORDER_COLOR, color);        for (int i = rowStart; i <= rowEnd; i++) {            cps.setProperty(CellUtil.getRow(i, sheet), column);        }    }    /**     * Sets the bottom border for a region of cells by manipulating the cell style of the individual     * cells on the bottom     *      * @param border The new border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setBorderBottom(int, CellRangeAddress, Sheet)}.     */    public static void setBorderBottom(int border, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setBorderBottom(border, region, sheet);    }    /**     * Sets the bottom border for a region of cells by manipulating the cell style of the individual     * cells on the bottom     *      * @param border The new border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setBorderBottom(int border, CellRangeAddress region, Sheet sheet) {        int colStart = region.getFirstColumn();        int colEnd = region.getLastColumn();        int rowIndex = region.getLastRow();        CellPropertySetter cps = new CellPropertySetter(CellUtil.BORDER_BOTTOM, border);        Row row = CellUtil.getRow(rowIndex, sheet);        for (int i = colStart; i <= colEnd; i++) {            cps.setProperty(row, i);        }    }    /**     * Sets the bottom border color for a region of cells by manipulating the cell style of the individual     * cells on the bottom     *      * @param color The color of the border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setBottomBorderColor(int, CellRangeAddress, Sheet)}.     */    public static void setBottomBorderColor(int color, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setBottomBorderColor(color, region, sheet);    }    /**     * Sets the bottom border color for a region of cells by manipulating the cell style of the individual     * cells on the bottom     *      * @param color The color of the border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setBottomBorderColor(int color, CellRangeAddress region, Sheet sheet) {        int colStart = region.getFirstColumn();        int colEnd = region.getLastColumn();        int rowIndex = region.getLastRow();        CellPropertySetter cps = new CellPropertySetter(CellUtil.BOTTOM_BORDER_COLOR, color);        Row row = CellUtil.getRow(rowIndex, sheet);        for (int i = colStart; i <= colEnd; i++) {            cps.setProperty(row, i);        }    }    /**     * Sets the top border for a region of cells by manipulating the cell style of the individual     * cells on the top     *      * @param border The new border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setBorderTop(int, CellRangeAddress, Sheet)}.     */    public static void setBorderTop(int border, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setBorderTop(border, region, sheet);    }    /**     * Sets the top border for a region of cells by manipulating the cell style of the individual     * cells on the top     *      * @param border The new border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setBorderTop(int border, CellRangeAddress region, Sheet sheet) {        int colStart = region.getFirstColumn();        int colEnd = region.getLastColumn();        int rowIndex = region.getFirstRow();        CellPropertySetter cps = new CellPropertySetter(CellUtil.BORDER_TOP, border);        Row row = CellUtil.getRow(rowIndex, sheet);        for (int i = colStart; i <= colEnd; i++) {            cps.setProperty(row, i);        }    }    /**     * Sets the top border color for a region of cells by manipulating the cell style of the individual     * cells on the top     *      * @param color The color of the border     * @param region The region that should have the border     * @param workbook The workbook that the region is on.     * @param sheet The sheet that the region is on.     * @deprecated 3.15 beta 2. Use {@link #setTopBorderColor(int, CellRangeAddress, Sheet)}.     */    public static void setTopBorderColor(int color, CellRangeAddress region, Sheet sheet, Workbook workbook) {        setTopBorderColor(color, region, sheet);    }    /**     * Sets the top border color for a region of cells by manipulating the cell style of the individual     * cells on the top     *      * @param color The color of the border     * @param region The region that should have the border     * @param sheet The sheet that the region is on.     */    public static void setTopBorderColor(int color, CellRangeAddress region, Sheet sheet) {        int colStart = region.getFirstColumn();        int colEnd = region.getLastColumn();        int rowIndex = region.getFirstRow();        CellPropertySetter cps = new CellPropertySetter(CellUtil.TOP_BORDER_COLOR, color);        Row row = CellUtil.getRow(rowIndex, sheet);        for (int i = colStart; i <= colEnd; i++) {            cps.setProperty(row, i);        }    }}


阅读全文
0 0
原创粉丝点击