将带有自定义xml的word 2003文档转换为word 2010

时间:2013-01-08 13:16:50

标签: c# asp.net ms-word

我正在创建一个应用程序,旨在通过将Content XML元素替换为Content Controls来将Word 2003的现有xml文档转换为DOCX。 我为此目的使用Interop程序集+ Word 2007,因为只有Word 2007可以支持自定义XML元素和内容控件。

建议的方法如下: 1.阅读xml文档 2.另存为DOCX。 3.从DOCX文件中识别XMLNodes(自定义XML元素) 4.将新的内容控件放在XMLNodes / Mapping XMLNodes到Content Controls的范围内。 5.删除XMLNodes。

我在实施上述内容时遇到了问题。问题是,在上面提到的步骤4中,保存文档后,将删除添加到文档中的所有内容控件。这是因为文档以Word 2003兼容模式保存,Word 2003不支持内容控件。

我已经尝试了很多禁用兼容模式但无法实现它。

你们中的任何人都可以建议我采取一些方法吗?

2 个答案:

答案 0 :(得分:0)

我也一直在尝试做你正在做的事情。有人指出你可以使用open xml来做

答案 1 :(得分:0)

步骤1:在单词2003文档中运行以下单词2003宏并保存。

'Word 2003 macro
Sub BookmarkUpdate()

  Dim objNode As XMLNode
    For Each objNode In ActiveDocument.XMLNodes
        objNode.Range.Bookmarks.Add (objNode.BaseName)
    Next
End Sub

第2步:在Word 2010中打开相同的文档并运行下面的单词2010宏并保存。

' Word 2010 macro
Sub CreateContentControl()
Dim name As String
For Each bk In ActiveDocument.Bookmarks
   Dim objcc As ContentControl
   Dim objRange As Range   
   ' Get the first paragraph as a range object.
   Set objRange = bk.Range
   ' Create a rich text content control.
   Set objcc = ActiveDocument.ContentControls.Add(wdContentControlRichText, objRange)  
   name = bk.name 
   objcc.Title = name
   objcc.Tag = name
 Next
End Sub