1.简单的形状 - 直线
直线无法设置填充色,无法设置文本
package hssf.shape.simpleshape;
import java.awt.Shape;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
/**
* 创建一个直线
* */
public class TestLine {
public static void main(String[] args) throws Exception {
// 创建一个工作博
Workbook workbook = new HSSFWorkbook();
// 创建一个sheet
Sheet sheet = workbook.createSheet();
// 画图的顶级管理器对象HSSFPatriarch, 一个sheet只能获取一个
HSSFPatriarch hssfPatriarch = (HSSFPatriarch) sheet.createDrawingPatriarch();
/**
* 直线在sheet中位置
* new HSSFClientAnchor(x1, y1, x2, y2, (short)startcol, startrow, (short)endcol, endrow)
* @param x1 直线一端在开始单元格(startcol, startrow)内的横坐标,范围[0, 2013],将列宽均分为1023份
* @param y1 直线一端在开始单元格(startcol, startrow)内的纵坐标,范围[0, 255],将行高均分为255份
* @param x2 直线一端在结束单元格(endcol, endrow)内的横坐标,范围[0, 2013],将列宽均分为1023份
* @param y2 直线一端在结束单元格(endcol, endrow)内的纵坐标,范围[0, 255],将列宽均分为255份
* @param startcol 直线一端所处开始列号,base 0
* @param startrow 直线一端所处开始行号,base 0
* @param endcol 直线另一端所处结束列号,base 0
* @param endrow 直线另一端所处结束行号,base 0
* */
HSSFClientAnchor anchor = new HSSFClientAnchor(500, 100, 600, 200, (short)1, 2, (short)4, 8);
// 创建一个简单形状
HSSFSimpleShape line = hssfPatriarch.createSimpleShape(anchor);
// 设置形状的类型
line.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE);
// 设置直线宽度为5pt
line.setLineWidth(HSSFShape.LINEWIDTH_ONE_PT * 5);
// 设置直线颜色
line.setLineStyleColor(255, 0, 255);
// 设置直线的样式
line.setLineStyle(HSSFSimpleShape.LINESTYLE_DOTSYS);
// 设置直线水平翻转了
line.setFlipHorizontal(true);
// 直线无法设置文字,会报错
// line.setString(new HSSFRichTextString("hello"));
// 直线没有填充色
// line.setFillColor(255, 0, 0);
FileOutputStream file = new FileOutputStream("C://Users//Administrator//Desktop//test.xls");
workbook.write(file);
file.close();
}
}
结果: