OpenOffice XML:如何存储固定行?

OpenOffice XML: how are fixed rows stored?

在 OpenOffice 中,我可以在顶部冻结一行,以便在滚动时固定。我想在从 .ods 文件中提取的 XML 中访问此信息。

我的第一个假设是,根据格式规范,table:table-header-rows 将是固定行的元素。然而,事实并非如此。

研究了 OO 网页上的规范和 ECMA 规范,我找不到任何 OO 可能存储此事实的信息。这里有人有什么想法可以帮助我吗?


edit1:我想在冻结一行之前和之后对 content.xml 进行比较。有趣的是,如果我唯一做的就是冻结行,我就无法保存——冻结似乎不被视为值得存储的更改或根本不被视为更改。如果我只是在一个空单元格上按 Del,我可以保存;比较这些文件没有区别。


(附带说明:我想看看 OO 的 xml-dev 邮件列表,但遗憾的是 OO 网页上的链接已过时)

此信息存储在 ODS 文件的 settings.xml 中。相关的配置项名称似乎是VerticalSplitModeVerticalSplitPositionPositionBottom。它们列在 https://wiki.oasis-open.org/office/Spreadsheet_View_Data.

以下值冻结第一行。

<config:config-item config:name="VerticalSplitMode" config:type="short">2</config:config-item>
<config:config-item config:name="VerticalSplitPosition" config:type="int">1</config:config-item>
<config:config-item config:name="PositionBottom" config:type="int">1</config:config-item>

相关代码来自 Example.java https://groups.google.com/forum/#!topic/jopendocument/YjySTc9zcCQ。但是它似乎不能正常工作,大概是因为最近版本的 OpenOffice 发生了变化。

final Element splitMode = (Element) spread.getXPath("./config:config-item[@config:name='VerticalSplitMode']").selectSingleNode(sheetSettings);
// 0 to disable
splitMode.setText("1");
final Element splitPos = (Element) spread.getXPath("./config:config-item[@config:name='VerticalSplitPosition']").selectSingleNode(sheetSettings);
// height in pixels
splitPos.setText("64");