当前位置: 首页 > 知识库问答 >
问题:

使用apache-poi自动调整excel注释大小

宋伟泽
2023-03-14

我们有很多由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自动计算注释大小?

共有1个答案

公孙嘉禧
2023-03-14

ClientAnchor支持偏移量,至少具体实现支持:

公共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,不包括在内)。

 类似资料:
  • 我尝试过自动调整我使用Jython Apache POI制作的Excel列的大小。我找到了这个线程:Apache POI Excel-如何配置要扩展的列?,但我仍然搞不清楚。 我尝试添加“sheet1.autoSizeColumn(1)”,但它不会改变任何东西。在每个可用列上调用它不是更好吗,因为为什么不希望每个列的格式都很好呢? 也许这在Jython中是不可能的? 恭喜你,克里斯托夫。

  • 问题内容: 我试图用Apache poi创建一个包含30列和100万条记录的大型Excel 2010。我正在按照此链接http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java中的描述进行创建 。但我希望列宽与列标题文本大小相同。

  • 我正在用ApachePOI创建一个excel文件,excel已经生成,但我无法根据我发布的代码中的单元格值来调整列 这就是我在excel中创建标题的方式 麻烦你帮我调一下栏目,我是阿帕契坡新手

  • 问题内容: 我有一个Java程序,它将标头和数据作为输入并生成一个excel文件。 但是,有时当标头值很长且列数更多时,我的Excel工作表往往会变得不必要地变宽。 由于标题的原因,我将不得不向下滚动以查看尾端列的内容。 有没有一种方法可以解决此问题,如果单元格中的内容较大,然后说x值,则自动换行发生并自动调整行高,固定列宽。 我正在寻找的粗略算法是: 如果有人可以指出一些在线示例。 谢谢阅读!

  • 问题内容: 我使用以下代码来自动调整电子表格中的列大小: 问题是,如果大型电子表格的行数超过3000行,则需要花10分钟以上的时间来自动调整每一列的大小。但是,对于小型文档而言,它运行得非常快。有什么可以帮助实现自动化以更快地工作的吗? 问题答案: 对我有用的解决方案: 可以避免合并区域,所以我可以遍历其他单元格并最终自动调整为最大的单元格,如下所示: 其中1.14388是“ Serif”字体和2