C#Microsoft.Office.Interop.Word使用XML和主题文件创建不需要的文件夹。为什么?

时间:2017-11-02 15:54:42

标签: c# visual-studio ms-word ms-office office-interop

我正在创建Winforms应用,并使用Microsoft.Office.Interop.Word打开文档并获取页数。它通常工作正常。在某些文件上,它正在执行此操作,它会创建一个新文件夹("文档名称" _files),并在该文件夹中创建三个新文件(colorschememapping.xml,filelist.xml和themedata.thmx) )。有问题的文档是Word 97-2003 Doc,扩展名为.doc。对于相同类型的其他文件,它不会这样做。只有某些。它仍然正确返回页数。这是我正在使用的代码:

public int PageCountWord(object Path)
    {
        // Get application object
        Microsoft.Office.Interop.Word.Application WordApplication = new Microsoft.Office.Interop.Word.Application();

        // Get document object
        object Miss = System.Reflection.Missing.Value;
        object ReadOnly = false;
        object Visible = false;
        Microsoft.Office.Interop.Word.Document Doc = WordApplication.Documents.Open(ref Path, ref Miss, ref ReadOnly, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Visible, ref Miss, ref Miss, ref Miss, ref Miss);

        // Get pages count
        Microsoft.Office.Interop.Word.WdStatistic PagesCountStat = Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages;
        int PagesCount = Doc.ComputeStatistics(PagesCountStat, ref Miss);
        Doc.Close();
        WordApplication.Quit();
        return PagesCount;
    }

它会在Doc.Close()行中创建文件夹和文件。

任何人都知道为什么会这样,如果我可以阻止它? (除了在我完成并删除任何新创建的文件时研究文件夹)

另外,遗憾的是,这些文件包含敏感信息,因此无法上传。希望有人遇到同样的问题,并发现了一个解决方案

1 个答案:

答案 0 :(得分:0)

最终工作代码:

    public int PageCountWord(object Path)
    {
        // Get application object
        Microsoft.Office.Interop.Word.Application WordApplication = new Microsoft.Office.Interop.Word.Application();

        // Get document object
        object Miss = System.Reflection.Missing.Value;
        object ReadOnly = false;
        object Visible = false;
        object SaveChanges = WdSaveOptions.wdDoNotSaveChanges;

        Microsoft.Office.Interop.Word.Document Doc = WordApplication.Documents.Open(ref Path, ref Miss, ref ReadOnly, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Visible, ref Miss, ref Miss, ref Miss, ref Miss);

        // Get pages count
        Microsoft.Office.Interop.Word.WdStatistic PagesCountStat = Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages;
        int PagesCount = Doc.ComputeStatistics(PagesCountStat, ref Miss);
        Doc.Close(SaveChanges);
        WordApplication.Quit();
        return PagesCount;
    }