Apache POI中行的自动大小高度

use*_*895 33 java excel apache-poi

我正在使用Apache POI将值输入到电子表格中.这些值有换行符,我能够成功使用此代码:

CellStyle style = cell.getCellStyle()
style.setWrapText(true)
cell.setCellStyle(style)
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然文本正确包装,但行的高度并不总是足以显示内容.如何确保我的行总是正确的高度?

小智 20

currentRow.setHeight((short)-1)
Run Code Online (Sandbox Code Playgroud)

适用于XSSFCell和Excel 2013

  • 此解决方案不适用于Ubuntu的LibreOffice版本5.1.6.2和POI 3.17,但如果使用MSExcel打开文档,则该解决方案有效 (3认同)

小智 18

HSSFWorkbook workbook=new HSSFWorkbook();
HSSFSheet sheet =  workbook.createSheet("FirstSheet");  
HSSFRow rowhead=   sheet.createRow((short)0);
HSSFCellStyle style = workbook.createCellStyle();
style.setWrapText(true);
row.setRowStyle(style);
row.getCell(0).setCellStyle(style);
Run Code Online (Sandbox Code Playgroud)

上面的代码将生成行的动态高度.

  • `style.setWrapText(true)`就足够了.谢谢! (6认同)
  • Eee ......不,这不起作用.至少不能在Ubuntu Linux上使用Libre Office (6认同)
  • @ed22,对我也不起作用。相同的环境。 (2认同)

JMB*_*JMB 5

我让它工作的唯一方法是编写我自己的实现来计算行高.代码现在作为Taro项目发布,因此您可以使用它.它有许多方便的方法,让你用更少的代码行编写Excel文件.

如果您希望将实现放在自己的代码中,可以在SpreadsheetTab类中找到它.中途有一个autoSizeRow(int rowIndex)方法.它基本上向下遍历行,每个单元格找到文本行数,然后使用字体大小计算最佳单元格高度.然后它将行高设置为最高单元格的高度.

  • 注意:这仅适用于其值上有“\n”的单元格。您必须自行确定将“\n”放置在哪里。如果没有,该行将只有一个行高 (2认同)

小智 -11

//我们可以使用工作表的列宽

Ex: sheet.setColumnWidth(0, 2000);
Run Code Online (Sandbox Code Playgroud)