none
vsto 怎么把word2003的文档升级为07的文档 RRS feed

  • 问题

  • 我写了如下代码,可是发现虽然他把文档升级成了docx ,但是还是不能添加ContentControl ,所以我判断本质他不是07的文档,求指点。发现论坛没有VSTO区。
    /// <summary>
            /// 将03的文档保存为07的
            /// </summary>
            /// <param name="filename"></param>
            private static string SaveDocx(FileInfo docFile)
            {
                Microsoft.Office.Interop.Word.ApplicationClass objApp = new ApplicationClass(); 
                Document OriginalDocument = objApp.Documents.Open(docFile.FullName);
                string fileName = Globals.ThisAddIn.cfg.DocSavePath + "\\" + docFile.Name.Replace(Path.GetExtension(docFile.FullName), "") + ".docx";
                OriginalDocument.SaveAs(fileName, WdSaveFormat.wdFormatDocumentDefault);
                OriginalDocument.Close(ref missing, ref missing, ref missing);
                objApp.Quit(ref missing, ref missing, ref missing);
                objApp = null;
                return fileName;
            }

    2014年1月7日 2:50

答案

  • 你好:

    首先要确保你的机器上已经安装了2007及以上版本的Office。然后调用SaveAs2方法,而不是SaveAs方法。在SaveAs2方法中有一个参数CompatibilityMode设置为当前的Office版本,比如安装了Office2010就设置为Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2010,然后就可以在保存之后的文件中添加ContentControl了。

    你之所以无法在转换过的文件中添加ContentControl,就是因为文档在打开(objApp.Documents.Open)的时候处于兼容模式。

    string file = @"C:\test.doc";
                var app = new Microsoft.Office.Interop.Word.Application();
                var doc = app.Documents.Open(file);
    
                doc.SaveAs2(FileName: file + "x", FileFormat: Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXMLDocument,
                    CompatibilityMode: Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2010);
                doc.Close();
                app.Quit();

    请尝试一下这个方法是否可行。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 ubosm 2014年1月10日 7:08
    2014年1月8日 6:26
    版主

全部回复

  • 建议您先安装一个Office2007,引用相关类库编程即可。不要用2007以下的版本。

    注意MSDN这里的细节部分:

    http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.wdsaveformat.aspx


    ASP.NET Questions
    Other Discussions
    FreeRice Donate
    Issues to report
    Free Tech Books Search

    2014年1月8日 2:46
    版主
  • 你好:

    首先要确保你的机器上已经安装了2007及以上版本的Office。然后调用SaveAs2方法,而不是SaveAs方法。在SaveAs2方法中有一个参数CompatibilityMode设置为当前的Office版本,比如安装了Office2010就设置为Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2010,然后就可以在保存之后的文件中添加ContentControl了。

    你之所以无法在转换过的文件中添加ContentControl,就是因为文档在打开(objApp.Documents.Open)的时候处于兼容模式。

    string file = @"C:\test.doc";
                var app = new Microsoft.Office.Interop.Word.Application();
                var doc = app.Documents.Open(file);
    
                doc.SaveAs2(FileName: file + "x", FileFormat: Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXMLDocument,
                    CompatibilityMode: Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2010);
                doc.Close();
                app.Quit();

    请尝试一下这个方法是否可行。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 ubosm 2014年1月10日 7:08
    2014年1月8日 6:26
    版主
  • 试了,可以用非常感谢。
    2014年1月10日 7:08
  • 谢谢回复
    2014年1月10日 7:09