你好,
这是我第一次使用 POI(Java Excel 解决方案),我正在尝试将其中一行的缩进设置为 17,如下所示:
CellStyle style = repSheetPositions.getRow(2).getCell(0).getCellStyle();
当我检查缩进值时:
short a = style.getIndention();
a = 15
在我将值更改为:
repSheet.getRow(2).getCell(0).getCellStyle().setIndention((short) 17);
这次的值为:
short a = style.getIndention();
a = 1
你能帮帮我吗?
非常感谢!
最佳答案
问题是 Excel 2003 对单元格的最大缩进有限制。根据this article , Excel 的单元格最大缩进为 15
。
The maximum indent value you can use is 15.
HSSFCellStyle
类必须通过计算您的值并在除以 16
时保留余数来考虑这一点。这些是我使用不同输入得到的输出:
15 => 15
16 => 0
17 => 1
18 => 2
31 => 15
32 => 0
但是,当使用 XSSFCellStyle
(用于 .xlsx 工作簿,Excel 2007+)时,此问题消失。使用 XSSFCellStyle
,我可以设置 17
并返回 17
。
如果您使用的是 Excel 2003 及之前的版本 (.xls),那么您将无能为力;这是一个 Excel 限制。但是,Excel 2007+ 支持大于 15 的缩进。解决方法是使用 .xlsx 工作簿,因此 Apache POI 使用 XSSFCellStyle
,它将支持 setIndention(short (17))
正确。
关于java - POI Java Excel解决方案——缩进值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21708516/