【问题标题】:POI Java Excel solution - Indentation valuePOI Java Excel 解决方案 - 缩进值
【发布时间】:2014-02-11 17:14:35
【问题描述】:

嗨,

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

你能帮帮我吗?

非常感谢!

【问题讨论】:

    标签: java excel apache-poi short bit-fields


    【解决方案1】:

    问题在于 Excel 2003 对单元格的最大缩进有限制。根据this article,Excel 对单元格的最大缩进是15

    您可以使用的最大缩进值为 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))

    【讨论】:

    • 太棒了!非常感谢rgettman!这对我来说很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多