Office Interop Word Mail Merge会抛出DISP_E_TYPEMISMATCH异常

时间:2017-11-13 07:58:45

标签: c# excel ms-office

我的问题涉及一个word文件,其中有一个嵌入了另一家公司的宏,我们必须将其删除,然后设置一个新的数据源路径(xlsx电子表格)。必须删除宏,因为它已经设置了我们获取文件时不再可用的数据源。现在我正在寻找以编程方式更改所述word文件的数据源(路径)的可能性,但是找不到任何只做VB Code的工作。我们不想写另一个宏并注入它我们只想在用户下载文件之前更改数据源路径。我可以自由使用任何图书馆。

有人可以建议我以编程方式更改word文件的数据源吗?

更新

我现在正在使用MS Office Interop Word Library并实现我正在寻找的内容(更改数据源)但不幸的是excel文件已经损坏,无法再打开了#34 ;无效的数据格式"。

以下代码:

        Application app = new Application();
        Document officeDoc = app.Documents.Open(toBeMerged);

        var srcFile = @"C:\DataSource.xlsx";

        FileInfo fileInfo = new FileInfo(srcFile)
        {
            IsReadOnly = false
        };

        officeDoc.MailMerge.CreateDataSource(srcFile);

        officeDoc.Save();
        officeDoc.Close();
        app.Quit();

更新2

我已经设置了所有需要的参数。

 officeDoc.MailMerge.CreateDataSource(missing, missing, missing, missing, missing, missing, missing, missing, srcFile);

参数如下: CreateDataSource(Name,PasswordDocument,WritePasswordDocument,HeaderRecord,MSQuery,SQLStatement,SQLStatement1,Connection,LinkToSource)

这将抛出System.Runtime.InteropServices.COMException 0x80020005(DISP_E_TYPEMISMATCH)异常,但该单词已成功生成。当我把srcFile变量放在它应该属于的开头时,尽管提供了所有可选参数,excel文件仍然像上面提到的那样受损。

先谢谢你帮我解决上一期。

0 个答案:

没有答案