java - POI Java Excel解决方案——缩进值

标签 java excel apache-poi short bit-fields

你好,

这是我第一次使用 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/

相关文章:

java - LDAP 请求挂起 15 秒

java - android.widget.Toolbar 和 android.support.v7.widget.Toolbar 有什么区别?

java - Apache poi 在 Excel 图表中添加标签

VBA找到第一个非空白行

python - 有没有办法删除 Excel 中的无效字符?

java - Apache POI - HSSF 单元格格式的垂直单元格对齐

apache-poi - POI sax 从 Cell 获取日期

java - InputStream 与 InputStreamReader

java - 在 API 22 上启动 AnimatedVectorDrawable 时出现 NullPointerException

vba - 在 Worksheet_Change 中将选择大小写组合为单元格和范围