获取Word文档的默认表格样式(来自VSTO加载项)

时间:2018-02-08 15:00:31

标签: c# ms-word vsto office-addins

问题: 如何从C#VSTO插件中获取文档的默认表格样式?

或者它的名字,至少?

注意事项:

  • Globals.ThisAddIn.Application.ActiveDocument.DefaultTableStyle无效。

  • Globals.ThisAddIn.Application.ActiveDocument.WordOpenXML没有提供答案。

长篇故事:

当我创建模板并将我的自定义样式(让我们说," MyStyle")指定为默认表格样式时,我可以看到它正常工作:

  • 使用该样式创建新表

  • 如果我解压缩模板文件并浏览到〜\ word \ settings.xml,它就在那里,就像白天一样:

    <w:settings (...)>
    (...)
     <w:defaultTabStop w:val="720"/>
     <w:defaultTableStyle w:val="MyStyleID"/>
     <w:characterSpacingControl w:val="doNotCompress"/>
    

然而,当我尝试从我的(c#)vsto插件访问该模板创建的文档时,我无法以任何方式访问此信息。

  • Globals.ThisAddIn.Application.ActiveDocument.DefaultTableStyle以任何方式返回我似乎无法识别的内容。它似乎是一个Microsoft.Office.Interop.Word.Style对象,但它的.LocalName属性为空,并且尝试访问几乎所有其他属性都会引发异常......

  • 如果我检查Globals.ThisAddIn.Application.ActiveDocument.WordOpenXML属性,我得到:

     <pkg:part pkg:name="/word/settings.xml" (...)>
      <pkg:xmlData>
       <w:settings (...)>
        (...)
        <w:defaultTabStop w:val="720"/>
        <w:characterSpacingControl w:val="doNotCompress"/>
    

...所以我需要的一点是神奇地失踪:/。当然,我在整个WordOpenXML输出中搜索了&#34; MyStyleID&#34;以及它的rsid和全名,但没有任何迹象表明它是默认样式!

事实上,我可以在其他地方看到这一点:

<w:style w:type="table" w:default="1" w:styleId="TableNormal">

所以TableNormal样式(MyStyle所基于的样式)实际上表示为默认值...但是当我创建表时,它们确实分配了MyStyle,而不是TableNormal!

有人请指教......

0 个答案:

没有答案