打开另存为docx,然后关闭word

本文关键字:word 然后 另存为 docx | 更新日期: 2023-09-27 18:04:41

所以我要做的是创建一个程序,选择一个地图与。doc文档打开它保存为docx,然后关闭word。我得到了这一切,但当我试图关闭Word它给了我一个错误。

主要代码:

    public void ConvertAll(string docFilePathOriginal, string docFilePath, string outputDocxFilePath)
    {
        MessageBox.Show(docFilePathOriginal);
        DocFiles = new List<string>();
        //calls the method that fills the list with the documents witht the filter.
        FindWordFilesWithDoc(docFilePathOriginal, ".doc");
        //make a new word each time for max performance
        Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
        foreach (string filename in DocFiles)
        {
            //exclude the .docx files, because the filter also accepts .docx files.
            if (filename.ToLower().EndsWith(".doc"))
            {
                try
                {
                var srcFile = new FileInfo(filename);
                var document = word.Documents.Open(srcFile.FullName);
                string docxFilename = srcFile.FullName.Replace(".doc", ".docx");
                document.SaveAs2(FileName: docxFilename, FileFormat: WdSaveFormat.wdFormatXMLDocument);
                }
                finally
                {
                    word.ActiveDocument.Close();
                }
            } 
        }
    }
获取.doc文件的代码:
void FindWordFilesWithDoc(string SelectedDirection, string filter)
    {
        //get all files with the filter and add them to the list.
        foreach (string d in Directory.GetDirectories(SelectedDirection))
        {
           foreach (string f in Directory.GetFiles(SelectedDirection))
           {
               DocFiles.Add(f);
           }
            //FindWordFilesWithDoc(d, filter);
        }
    }

它给我的错误:

方法"Microsoft.Office.Interop.Word._Document. xml"之间的歧义。关闭(ref object, ref object, ref object)'和非方法'Microsoft.Office.Interop.Word.DocumentEvents2_Event.Close'。使用方法组。

打开另存为docx,然后关闭word

问题是有一个Close()方法和一个Close事件。

看这个线程。正如海报上所说,您可能希望使用Close()方法而不是事件。在这种情况下,尝试将word.ActiveDocument转换为_Document,并对其调用Close()。

编辑:
您也可以将类型设置为_Application,而不是Application:

 Microsoft.Office.Interop.Word._Application word = new Microsoft.Office.Interop.Word.Application();

(注意,我目前无法测试这个,我当前的机器上没有安装office)