OpenOffice XML:固定行如何存储?
问题描述:
在OpenOffice中,我可以在顶部冻结一行,以便在滚动时进行修复。我想在从.ods文件中提取的XML中访问这些信息。OpenOffice XML:固定行如何存储?
我的第一个假设是,沿着所述格式规范的线,table:table-header-rows
将是固定的行(多个)的元素。然而,这种情况并非如此。
学习OO网页和ECMA规范的规范,我找不到这个地方实际上可能是由面向对象存储的任何信息。这里有人有一个想法可以帮助我吗?
edit1:我想在冻结一行之前和之后做一个content.xml的diff。有趣的是,如果我唯一做的事情是冻结行,我不能保存 - 看起来,冻结并不被认为是一个值得改变的商店或者是一个改变。如果我只是在空单元格上按Del
,我可以保存;比较这些文件显示没有区别。
(作为一个方面说明:我想看看OO的XML-dev邮件列表,但遗憾的是在二OO网页的链接已经过时)
答
此信息存储在settings.xml中从ODS文件。相关配置项的名称似乎是VerticalSplitMode
,VerticalSplitPosition
和PositionBottom
。他们被列在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");