Apache POI Excel:ActiveSheet 在 Libreoffice 的 PrintPreview 中产生多个工作表
Apache POI Excel: ActiveSheet results in multiple sheets in PrintPreview in Libreoffice
我有一个工作簿,其中包含 3 个不同的 sheet(A
、B
、C
)。我以相同的顺序使用 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);
...
我有一个工作簿,其中包含 3 个不同的 sheet(A
、B
、C
)。我以相同的顺序使用 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);
...