1.问题引入
如下所示的文本框,怎么使用POI使其移动呢?
2. 分析与解决
我POI的版本使用的是4.1.0,操作的是07版本(即.xlsx后缀的excel文件)。
在POI中,文本框是XSSFSimpleShape对象。
可以通过如下方式获取与移动文本框。需要注意的是:
直接通过 XSSFSimpleShape s=(XSSFSimpleShape)shape;
s.getAnchor();得到的是XSSFAnchor对象,用XSSFAnchor移动文本框好像没有用,于是我转成了ClientAnchor ,通过设置row1 与row2控制其上下移动。还可以设置col1和col2控制其左右移动
List<POIXMLDocumentPart> list=sheet.getRelations();
int shift=5;
for(POIXMLDocumentPart part : list){
if(part instanceof XSSFDrawing){
XSSFDrawing drawing=(XSSFDrawing) part;
List<XSSFShape> shapes=drawing.getShapes();
for(XSSFShape shape: shapes){
if(shape instanceof XSSFSimpleShape){
XSSFSimpleShape s=(XSSFSimpleShape)shape;
ClientAnchor anchor=(ClientAnchor)s.getAnchor();
anchor.setRow1(anchor.getRow1()+shift);
anchor.setRow2(anchor.getRow2()+shift);
}
}
}
}