目录
1 Maven依赖
<!-- easyExcel Excel文档处理工具 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.8</version>
</dependency>
<!-- hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.7</version>
</dependency>
2 代码实现
/**
* 插入线条(线条颜色默认为黑色,线条样式默认为Solid,线条宽度默认为0.5)
*
* @param workbook 文档对象
* @param sheet sheet页对象
* @param beginRowIndex 开始行号
* @param endRowIndex 结束行号
* @param beginColIndex 开始列号
* @param endColIndex 结束列号
*/
public static void insertLine(Workbook workbook, Sheet sheet, int beginRowIndex, int endRowIndex, int beginColIndex
, int endColIndex) {
insertLine(workbook, sheet, beginRowIndex, endRowIndex, beginColIndex, endColIndex, POIUtil.getXSSFRGBColor(0, 0, 0)
, LineStyleConstant.INT_SOLID, 0.5d);
}
/**
* 插入线条
*
* @param workbook 文档对象
* @param sheet sheet页对象
* @param beginRowIndex 开始行号
* @param endRowIndex 结束行号
* @param beginColIndex 开始列号
* @param endColIndex 结束列号
* @param lineColor 线条颜色
* @param lineStyle 线条样式
* @param lineWidth 线条宽度
*/
public static void insertLine(Workbook workbook, Sheet sheet, int beginRowIndex, int endRowIndex, int beginColIndex, int endColIndex
, Color lineColor, int lineStyle, double lineWidth) {
insertShape(workbook, sheet, beginRowIndex, endRowIndex, beginColIndex, endColIndex, lineColor, lineStyle, lineWidth
, ShapeTypes.LINE);
}
/**
* 插入形状
*
* @param workbook 文档对象
* @param sheet sheet页对象
* @param beginRowIndex 开始行号
* @param endRowIndex 结束行号
* @param beginColIndex 开始列号
* @param endColIndex 结束列号
* @param lineColor 线条颜色
* @param lineStyle 线条样式
* @param lineWidth 线条宽度
* @param shapeType 形状类型
*/
public static void insertShape(Workbook workbook, Sheet sheet, int beginRowIndex, int endRowIndex, int beginColIndex, int endColIndex
, Color lineColor, int lineStyle, double lineWidth, int shapeType) {
CreationHelper helper = workbook.getCreationHelper();
//画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
Drawing drawing = sheet.getDrawingPatriarch();
if (drawing == null) {
drawing = sheet.createDrawingPatriarch();
}
ClientAnchor anchor = helper.createClientAnchor();
// 设置线条的开始位置
anchor.setCol1(beginColIndex);
anchor.setRow1(beginRowIndex);
// 设置线条的结束位置
anchor.setCol2(endColIndex);
anchor.setRow2(endRowIndex);
if (drawing instanceof XSSFDrawing) {
XSSFSimpleShape shape = ((XSSFDrawing) drawing).createSimpleShape((XSSFClientAnchor) anchor);
// 设置形状类型
shape.setShapeType(shapeType);
// 设置线宽
shape.setLineWidth(lineWidth);
// 设置线的风格
shape.setLineStyle(lineStyle - 1);
// 设置线的颜色
XSSFColor xssfColor = (XSSFColor) lineColor;
byte[] rgbBytes = xssfColor.getRGB();
if (rgbBytes == null || rgbBytes.length < 3) {
shape.setLineStyleColor(0, 0, 0);
} else {
shape.setLineStyleColor(rgbBytes[0], rgbBytes[1], rgbBytes[2]);
}
}
}
3 调试代码
/**
* 测试插入线条
*/
@Test
public void testInsertLine(){
try {
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet();
File file = new File("D:/easyexcel/testInsertLine.xlsx");
FileUtil.createNewFile(file);
//插入线条
POIExcelUtil.insertLine(workbook,sheet,1,2,0,4);
workbook.write(new FileOutputStream(file));
} catch (Exception e) {
e.printStackTrace();
}
}
4 调试结果
注:
(1)只支持07版的Excel文档。
(2)源码请查看Gitee。
xudongbase: 主要是项目中可以用到的共通方法https://gitee.com/xudong_master/xudongbase