C#操作Word进行打印及保存
用printout方法进行打印,此时会提示“页边距设于可打印区域之外”(模板文件需要,不太好改模板)
请问这个提示有没有办法去掉
此外,在printout之后立即进行保存操作,此时会出错,提示“被呼叫方拒接接收呼叫”
怀疑与上面的打印提示有关,不知道是否是这个原因,请问该如何解决
写写

解决方案 »

  1.   

    http://blog.sina.com.cn/s/blog_66588a630100o30t.html
      

  2.   

    谢谢,不过似乎没用,也是用printout打印的,其中的background我也设过了,没有用
      

  3.   

    试了下,改application.DisplayAlert也没用
    而且在另一台打印机上不会跳出可打印区域之外的提示,也就没有“被呼叫方拒接接收呼叫”的问题
    所以最主要还是解决打印时跳出警告提示的问题
      

  4.   

    根据经验,DisplayAlert肯定有用,要不再试试看?
      

  5.   

    实践过了啊,还能怎么试……另外再补充一点,发现不是保存导致的出错,是最后关闭word时出的错
    一开始是因为保存以及其他的填充、打印操作未能执行才以为是保存时出错的
    最主要还是能屏蔽这个警告就好~ 
      

  6.   


                DocumentWriter doc = new DocumentWriter(TemplateFile);
                
                for (i = 0; i < pc.Count; i++)
                {
                    try
                    {
                        doc.Write("bm1", pc[i].xx);//具体代码关系不大,先不贴了
                        Application.DoEvents();
                            doc.QuickPrint();
                        Application.DoEvents();
                        doc.SaveAs(filename);//具体代码关系不大,先不贴了
                    }
                    catch (Exception e)
                    {
                        doc.CloseAll();
                        return -1;
                    }
                    Application.DoEvents();
                }            doc.CloseAll();//这里出错
            private void OpenDocument(string filename)
            {
                object FileName = filename;
                wapp = new Microsoft.Office.Interop.Word.Application();
                wapp.Visible = false;
                wapp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
                if (!File.Exists(filename))
                {
                    try
                    {
                        doc = wapp.Documents.Add(MissingObject, MissingObject, MissingObject, MissingObject);
                        _filename = filename;
                    }
                    catch
                    {
                        throw new FileNotFoundException("无效文件路径");
                    }
                }
                else
                {
                    _filename = "";
                    doc = wapp.Documents.Open(ref FileName, ref MissingObject, ref ReadOnly, ref MissingObject, ref MissingObject, ref MissingObject, ref MissingObject, ref MissingObject, ref MissingObject,
                                                ref MissingObject, ref MissingObject, ref Visible, ref MissingObject, ref MissingObject, ref MissingObject, ref MissingObject);
                }
                doc.Activate();
                System.Windows.Forms.Application.DoEvents();
            }
            
            public void QuickPrint()
            {
                    object Background = true;
                    doc.PrintOut(Background, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject, MissingObject);
                System.Windows.Forms.Application.DoEvents();
            }        public void CloseAll()
            {
                if (wapp != null)
                {
                    if (doc != null)
                    {
                        try
                        {
                            doc.Close(SaveChanges, MissingObject, MissingObject);
                        }
                        finally
                        {
                            doc = null;
                        }
                    }
                    try
                    {
                        if (wapp.Documents.Count == 0)
                        {
                            wapp.Quit(SaveChanges, MissingObject, MissingObject);
                        }
                    }
                    finally
                    {
                        wapp = null;
                    }
                }
                GC.Collect();
                System.Windows.Forms.Application.DoEvents();
            }
        }
      

  7.   

    c#操作word一般使用Microsoft.Office.Interop.Word.ApplicationClass类,你用的那个似乎是给vb/vb.net调用的,你确信你的代码可以正常运行?在我得印象中,Microsoft.Office.Interop.Word.Application在c#中会出错或者像你这样很奇怪的错误。
      

  8.   

    在连另一台打印机时运行完全正常
    现在也只是多出一个正常的提示而已,不能算出错,只是没办法屏蔽ApplicationClass我有时间试下谢谢
      

  9.   

    ApplicationClass不行
    Application是接口,还是得用这个
      

  10.   

    ls说的没错.
    c#操作word一般使用Microsoft.Office.Interop.Word.ApplicationClass类
      

  11.   

    ……
    问题是声明private Microsoft.Office.Interop.Word.ApplicationClass wapp = null;的时候
    就提示了PS:引用了using Microsoft.Office.Interop.Word;
    using Microsoft.Office.Interop;
    using Microsoft.Office.Core;
      

  12.   

    解决办法:在Visual Studio 中点击菜单项“视图->解决方案资源管理器”,在其中点开“引用”文件夹,在"Microsoft.Office.Interop.Word" 上点击鼠标右键,选择“属性”,将属性中的“嵌入互操作类型”的值改为“false”即可。
      

  13.   

    用ApplicationClass是没问题了
    但是那个提示依然存在
      

  14.   

    http://115.com/file/e7zhimi7#
    一个会产生此问题的word文档