使用Apache POI在Excel文件中设置浏览模式

问题描述:

Excel有用于查看不同板材的模式:正常,页面布局,分页符preVIEW。 (2010年Excel中:在视图选项卡)。观看模式单独保存每个工作表在工作簿,然后再次打开时恢复。

Excel has different modes for viewing a sheet: Normal, Page Layout, Page Break Preview. (In excel 2010: in the view tab). The view mode is saved seperately for each sheet in a workbook and is restored when opened again.

我试图找到一种方法来设置使用HSSF要么XSSF或视图模式。
在旧的二进制格式,寻找答案似乎完全不可能很遗憾。
在2007+ OOXML格式版本比较并给出基本答案,看着XL /工作表/ sheet1.xml
在普通视图:

I am trying to find a way to set a view mode using Either HSSF or XSSF. In the old binary format, finding the answer seems quite impossible unfortunately. In 2007+ OOXML format diffing does give the basic answer, looking at xl/worksheets/sheet1.xml In normal view:

<sheetViews>
 <sheetView rightToLeft="1" tabSelected="1" zoomScaleNormal="100" workbookViewId="0">
</sheetViews>

在页面视图:

<sheetViews>
 <sheetView rightToLeft="1" tabSelected="1" view="pageLayout" zoomScaleNormal="100" workbookViewId="0"/>
</sheetViews>

这是每个表中的第二个标签。是否有编辑属性的任何XSSF API选项? (或问题的唯一解决办法是拆封文件,编辑它,并重新包装)

That is the second tag in each sheet. Is there any XSSF API option to edit that attribute? (or the only solution to the problem would be unpacking the file, editing it and repacking)

谢谢!

XSSF不直接暴露这一点,但你可以得到它,如果你想

XSSF doesn't expose this directly, but you can get at it if you want

XSSFSheet 对象,调用 getCTWorksheet 来获得低级别的XML对象支持的纸张。 CTWorksheet提供了一个 getSheetViews 方法。你会喜欢想是这样的:

From the XSSFSheet object, call getCTWorksheet to get the low level XML object backing the sheet. CTWorksheet provides a getSheetViews method. You'll like want something like:

 CTSheetView view = sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0);
 view.setView(STSheetViewType.PAGE_LAYOUT);