2017-08-09 66 views
1

在OpenOffice中,我可以在顶部冻结一行,以便在滚动时进行修复。我想在从.ods文件中提取的XML中访问这些信息。OpenOffice XML:固定行如何存储?

我的第一个假设是,沿着所述格式规范的线,table:table-header-rows将是固定的行(多个)的元素。然而,这种情况并非如此。

学习OO网页和ECMA规范的规范,我找不到这个地方实际上可能是由面向对象存储的任何信息。这里有人有一个想法可以帮助我吗?


edit1:我想在冻结一行之前和之后做一个content.xml的diff。有趣的是,如果我唯一做的事情是冻结行,我不能保存 - 看起来,冻结并不被认为是一个值得改变的商店或者是一个改变。如果我只是在空单元格上按Del,我可以保存;比较这些文件显示没有区别。


(作为一个方面说明:我想看看OO的XML-dev邮件列表,但遗憾的是在二OO网页的链接已经过时)

回答

1

此信息存储在settings.xml中从ODS文件。相关配置项的名称似乎是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");