在c#中使用word为啥在关闭时总是显示“另存为”对话框

Posted

技术标签:

【中文标题】在c#中使用word为啥在关闭时总是显示“另存为”对话框【英文标题】:using word in c# why always show 'save as' dialog when close在c#中使用word为什么在关闭时总是显示“另存为”对话框 【发布时间】:2013-07-30 03:27:59 【问题描述】:

我正在编写一些代码,试图将 Word 文档转换为 swf 文件。

我是这样做的:

    我使用office组件服务将word文档转换为PDF文档 我使用 swftools 将 PDF 转换为 swf。

我是在我的计算机(64 位,Windows Server 2008 R2,Office 2010)上完成的,它工作正常,但是当我将它放入服务器(64 位,Windows Server 2008 R2,Office2010)时,“保存”当代码试图关闭程序中的 Word 时,将显示“对话框”,无论我单击“保存”还是“取消”,它都会抛出异常“文件为只读”。但实际上,我并没有更改原始文件,我只是将其打开并保存为 PDF 文档。

这里是“将 Word 转换为 PDF”的代码:

bool ret = true;
        Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application();
        Microsoft.Office.Interop.Word.Document doc = null;
        object Unknown = Type.Missing;
        try
        

            object Source = path;
            object Target = path.Substring(0, path.LastIndexOf(".")) + ".pdf";
            if (outpath != "")
                Target = outpath;
            object readOnly = true;
            object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
            doc = newApp.Documents.Open(ref Source, ref Unknown, ref readOnly,
                ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown,
                ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
            doc.SaveAs(ref Target, ref format,
                ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown,
                ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
        
        catch (Exception e)
        
            ret = false;
        
        finally
        
            if (doc != null)
            
                doc.Close(ref Unknown, ref Unknown, ref Unknown);
                //dialog shows up here
            
            newApp.Quit(ref Unknown, ref Unknown, ref Unknown);
            GC.Collect();
        

        return ret;

有什么建议吗?

【问题讨论】:

尝试去掉swf逻辑,只将word文档转换成pdf来隔离问题。如果这在您的生产服务器上有效,那么这意味着生产中的 swftools 发生了一些事情 我已经这样做了,swftools 工作正常,因为我尝试将 pdf 转换为 swf,它在服务器上工作正常 不确定这会有所不同,但请尝试object Unkown=System.Reflection.Missing.Value,而不是您现在拥有的...... 【参考方案1】:

将 false 作为第一个参数传递,提示将消失

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.close(v=vs.80).aspx

【讨论】:

以上是关于在c#中使用word为啥在关闭时总是显示“另存为”对话框的主要内容,如果未能解决你的问题,请参考以下文章

怎么把Word转换为网页html格式

word文件显示乱码怎么办?

如何将word转成html格式

在 Word 2010 中禁用另存为但不保存

word另存为pdf图片模糊

C# 使用保存对话框将图片框另存为 jpeg