我正在尝试使用Apache POI绘制人字形形状。我想最后更改箭头的角度,以便为文本区域获得更多空间。目前,该角度几乎为45度。我没有在API文档中找到任何可以帮助我更改箭头边缘角度的东西。
ClientAnchor anchor = this.createClientAnchor(helper, x, y,a, b);
XSSFSimpleShape shape = ((XSSFDrawing) drawing).createSimpleShape((XSSFClientAnchor) anchor);
shape.setShapeType(ShapeTypes.CHEVRON);
shape.setLineWidth(1.5);
shape.setLineStyle(0);
答案 0 :(得分:0)
如果创建默认形状ShapeTypes.CHEVRON
并在Excel
中查看此形状,将看到用于设置箭头角度的手柄。进行操作,然后保存文件,然后简单地解压缩*.xlsx
文件,看看/xl/drawings/drawing1.xml
。在那里您会找到
...
<a:prstGeom prst="chevron">
<a:avLst>
<a:gd name="adj" fmla="val 160000"/>
</a:avLst>
</a:prstGeom>
...
因此,我们需要一个AvLst
的{{1}},然后才能以编程方式操纵该句柄(CTGeomGuideList
)。
我们唯一必须另外知道的是adj
的可能值是什么。某些测试设置会导致洞悉0是调整手柄向右最大移动,这将导致矩形形状。调整手柄最大向左移动的位置是val
,其中100,000 * cx / cy * 1
是宽度,cx
是形状的高度。所有其他调整手柄设置都在两者之间。因此cy
将把调整手柄移到中间。
示例:
100,000 * cx / cy * 0.5