当前位置:编程学习 > C#/ASP.NET >>

关于c#office编程插入图片的问题提示组件异常的问题

public static void stampConvertPdf(Object filePath, float wzLift, float wzTop)
        {
            ApplicationClass app = new ApplicationClass();
            object objMissing = System.Reflection.Missing.Value;
            Document doc = app.Documents.Open(ref filePath, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing);
            doc.Select();
            try
            {
                app.Browser.Next();
                WordOperator wo = new WordOperator(app, doc);
                //章
                // 插入图片\
                object ltf = false;
                object swd = true;
                object ac = app.Selection.Range;
                InlineShape _inlines = app.Selection.Range.InlineShapes.AddPicture("d:/pic/zhang.gif",
                  ref  ltf, ref  swd, ref  objMissing);
                // 将图片设置为四周环绕型
                _inlines.Width = 108.85f;
                _inlines.Height = 108.3f;
                
                //try
                //{
                Shape _s = _inlines.Range.InlineShapes.ConvertToShape();
                _s.WrapFormat.Type = WdWrapType.wdWrapInline;
                _s.ZOrder(Microsoft.Office.Core.MsoZOrderCmd.msoSendBehindText);
                _s.IncrementLeft(wzLift);
                _s.IncrementTop(wzTop);
                // }
                //catch (Exception ee)
                //{

                //    Shape _s = _inlines.ConvertToShape();
                //    _s.WrapFormat.Type = WdWrapType.wdWrapInline;
                //    _s.ZOrder(Microsoft.Office.Core.MsoZOrderCmd.msoSendBehindText);
                //    _s.IncrementLeft(wzLift);
                //    _s.IncrementTop(wzTop);
                //}

                object foamat = WdSaveFormat.wdFormatDocument;
                doc.SaveAs(ref  filePath, ref  foamat, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing, ref  objMissing);
                //插入结果文件pdf版
                wo.createPdf(filePath.ToString(), doc, app);
                doc.Close(ref objMissing, ref objMissing, ref objMissing);
                app.Quit(ref objMissing, ref objMissing, ref objMissing);
            }
            catch (Exception e)
            {
                doc.Close(ref objMissing, ref objMissing, ref objMissing);
                app.Quit(ref objMissing, ref objMissing, ref objMissing);
                Console.WriteLine("盖章并且转换pdf发生异常" + e.StackTrace);

            }
        }
这个方法我的程序会循环调用,第一次代用正常,第二次运行到Shape _s = _inlines.Range.InlineShapes.ConvertToShape();
发生异常,程序继续运行,第三次调用又正常,第4次Shape _s = _inlines.Range.InlineShapes.ConvertToShape();
又提示提示异常。不知道是什么原因。
错误信息"Error HRESULT E_FAIL has been returned from a call to a COM component.
错误代码::-2147467259
应该是组件错误吧。希望哪位大侠遇到相关的问题,指教指教我谢了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,