使用 apache poi 在 excel 文件中设置页面查看模式

发布于 2024-12-11 12:05:52 字数 669 浏览 2 评论 0原文

Excel 有不同的查看工作表的模式:正常、页面布局、分页预览。 (在 Excel 2010 中:在视图选项卡中)。工作簿中每个工作表的查看模式单独保存,并在再次打开时恢复。

我正在尝试找到一种使用 HSSF 或 XSSF 设置视图模式的方法。 不幸的是,在旧的二进制格式中,找到答案似乎是不可能的。 在 2007+ OOXML 格式比较确实给出了基本答案,查看 xl/worksheets/sheet1.xml 在普通视图中:

<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 选项可以编辑该属性? (或者问题的唯一解决方案是解压文件,编辑它并重新打包)

谢谢!

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.

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>

In page layout view:

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

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)

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑红尘 2024-12-18 12:05:52

XSSF 不会直接公开这一点,但如果您想要的话

,您可以从 XSSFSheet 对象中调用 getCTWorksheet 来获取支持工作表的低级 XML 对象。 CTWorksheet 提供了 getSheetViews 方法。你会想要这样的东西:

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

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

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文