Apache POI Excel:ActiveSheet 在 Libreoffice 的 PrintPreview 中产生多个工作表

Apache POI Excel: ActiveSheet results in multiple sheets in PrintPreview in Libreoffice

我有一个工作簿,其中包含 3 个不同的 sheet(ABC)。我以相同的顺序使用 POI 创建它们,整个创建过程工作得很好。不知何故,我想让最后一个 sheet 作为活动的。因此我设置

 workBook.setActiveSheet(2);

当我使用 Libreoffice 7.1 打开工作簿时,C 显示为活动工作簿。当我打开打印预览时,第一个 sheet (A) 总是包含在内。更改代码以将 C 设置为所选代码也无济于事。

有没有办法为 Libreoffice 修复它? (未 A 包含在打印预览中)

In Excel 以及 LibreOffice Calc 可以在一个工作簿中选择多个 sheet。这是一个需要的功能,因为所有设置都将应用于所有选定的 sheet。因此,在 GUI 中,您可以同时将 sheet 属性(例如页面设置)设置为多个 sheet。 GUI 中单元格的更改也会应用于所有选定的 sheet。因此,您可以同时更改多个 sheet 中的单元格格式和单元格值。

这就是为什么 Workbook.setActiveSheet 将设置活动 sheet - 只有一个 sheet 可以是活动 - 但不会取消选择 sheet。要取消选择sheets,需要使用Sheet.setSelected(false)

因此,如果您只想选择活动的 sheet,则需要取消选择所有其他。

使用 HSSF Workbook.setActiveSheet 也不会设置活动的 sheet 选中。所以你应该使用 Sheet.setSelected(true).

你的情况:

...
workBook.getSheetAt(0).setSelected(false);
workBook.getSheetAt(1).setSelected(false);
workBook.getSheetAt(2).setSelected(true);
workBook.setActiveSheet(2);
...