提问者:小点点

增加高度合并单元ApachePOI


我正在使用ApachePOISXSSF生成xlsx文档。该文档使用Times New Roman大小为9和11,并且更改了默认的单元格宽度和高度。问题是如何计算合并单元格的高度,以便所有文本都适合(单元格的高度必须根据给定文本动态设置)?运行应用程序的服务器没有显示,并且此代码运行在IBM集成总线中。

如何获得使用Java定义宽度的多行富文本字段(任何字体,任何字体大小)所需的高度的解决方案?不合适。运行应用程序的服务器缺少显示和字符串int ppi=java. awt.Toolkit.getDefaultToolkit().getScreenSolutions();返回异常,手动选择ppi值也是不可能的。如果有显示,一切正常。

并且有没有办法以某种方式使用“对齐中心选择”功能?


共1个答案

匿名用户

我发现居中选择给出了类似于水平合并多个单元格的结果,但是我在ApachePOI中找不到如何使用它的答案。结果,通过实验,我发现为了实现这种效果,你需要做以下事情:

  1. 创建CellStyle;为其指定setWrapText(true)和set对齐(Horizontal对齐.CENTER_SELECTION)
  2. 将步骤1中创建的样式应用于所有需要合并的单元格
  3. 指定第一个单元格中的值

代码示例:

Font font = wb.createFont(); // where wb - is SXSSFWorkbook object
font.setFontName("Times New Roman");
font.setFontHeightInPoints((short) 11);

CellStyle style = wb.createCellStyle();
style.setFont(font);
style.setWrapText(true);
style.setAlignment(HorizontalAlignment.CENTER_SELECTION);

for (int i = 0; i <= endCellNum - firstCellNum; i++){ // where endCellNum - number of last cell of selection and firstCellNum is number of first cell of selection
    Cell cell = curRow.createCell(firstCellNum + i);
    cell.setCellStyle(cs);
    if (i == 0){
        firstCell = cell;
    }
}

firstCell.setCellValue(value);