我是写你提到的原始线程的人。最后我实现了一个解决方案,不是我正在寻找的解决方案,但至少它对我有用。我只是忘了用我找到的解决方案更新我的问题。
我创建了一个新方法,它遍历我想要自动调整大小的工作表的列并做两件事。首先,我自动调整列的大小,因此我们将拥有我们不想要的宽度,因为它没有考虑箭头的宽度。然后我手动设置列的宽度,包括箭头的宽度。我不得不玩一点才能找到箭头的宽度(对我来说是 1300)。我想这个宽度可以为你工作,但你可以随意设置它。
可以想象,您应该首先获取并自动过滤数据。之后,您调用一种方法来自动调整列的大小,就像我使用的那样:
private static final int WIDTH_ARROW_BUTTON = 1300;
private void autosizeColumnsFromSheet(final Sheet excelSheet, final int fromColumn, final int toColumn) {
for (int i = fromColumn; i <= toColumn; i++) {
excelSheet.autoSizeColumn(new Short(String.valueOf(i)));
try {
excelSheet.setColumnWidth(i, excelSheet.getColumnWidth(i) + WIDTH_ARROW_BUTTON);
} catch (final Exception e) {
// don't do anything - just let autosize handle it
}
}
}