我们有很多由apache poi生成的excel报告。其中一些包含标题中的注释。由于许多报告,我们希望创建用于添加注释的通用解决方案。我们注意到可以通过以下代码将注释添加到单元格中:
public static void addComment(final Workbook workbook, final Sheet sheet, final Cell cell, final Row row,
final String comment) {
final CreationHelper factory = workbook.getCreationHelper();
final Drawing drawing = sheet.createDrawingPatriarch();
final ClientAnchor anchor = factory.createClientAnchor();
anchor.setCol1(cell.getColumnIndex());
anchor.setCol2(cell.getColumnIndex() + 3);
anchor.setRow1(row.getRowNum());
anchor.setRow2(row.getRowNum() + 5);
final Comment cellComment = drawing.createCellComment(anchor);
final RichTextString richText = factory.createRichTextString(comment);
cellComment.setString(richText);
cell.setCellComment(cellComment);
}
我们还注意到注释框大小可以使用列/行索引设置 - 这是我们的主要问题,因为如果第一列有100px而第二列有1000px则注释宽度将是1000px。这是我们的问题 - 是否有可能使用apache poi设置带像素的注释大小而不是列/行索引?或者也许有一些方法可以用apache poi自动计算评论大小?
答案 0 :(得分:0)
ClientAnchor支持偏移,至少具体实现如下:
public XSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, int col1, int row1, int col2, int row2)
dx1偏离左边,dx2偏离右边,dy1偏离顶部,dy2偏离底部(col1,row1是行col,col2,row2是结束col,非包含)
因此,要减小宽度,只需为dx2指定非零值。
dx1,dx2,dy1和dy2是英制公制单位(EMU)。每个EMU有9525个像素,因此您必须使用相当大的值。