Fork me on GitHub

winform 使用Clipboard 和windows Word Com组件 把Html 导出到word

首先是把Html复制到剪贴板
然后使用:
复制代码
private void saveAsWordCopy(string destFileName)
        {


            Microsoft.Office.Interop.Word.Application wordApp = null;       //声明word应用程序变量
            Microsoft.Office.Interop.Word.Document worddoc = null;

            object Nothing = Missing.Value;           //COM调用时用于占位
            try
            {
                object path;                      //声明文件路径变量

                object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument; //Word文档的保存格式
                wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();              //声明一个wordAPP对象
                worddoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);

                worddoc.ActiveWindow.View.SeekView = oWord.WdSeekView.wdSeekPrimaryFooter;
                wordApp.Selection.HeaderFooter.LinkToPrevious = false;
                wordApp.Selection.HeaderFooter.Range.ParagraphFormat.Alignment = oWord.WdParagraphAlignment.wdAlignParagraphCenter;

                wordApp.Selection.HeaderFooter.Range.Text = string.Empty;

                object oNumberAlignment = oWord.WdPageNumberAlignment.wdAlignPageNumberCenter;
                object oFirstPage = true;
                wordApp.Selection.HeaderFooter.PageNumbers.Add(ref oNumberAlignment, ref oFirstPage);
                wordApp.ActiveWindow.View.SeekView = oWord.WdSeekView.wdSeekMainDocument;

                var data = HtmlFData(strHtml);

                MemoryStream sMem = new MemoryStream();

                byte[] byteHtml = Encoding.UTF8.GetBytes(data);

                sMem.Write(byteHtml, 0, byteHtml.Length);
                sMem.Flush();

                var dataObject = new DataObject();
                dataObject.SetData(DataFormats.Html, sMem);

                Clipboard.SetDataObject(dataObject);

                worddoc.Paragraphs.Last.Range.Paste();
                //设置段落段后格式 add by hq 20200527
                worddoc.Paragraphs.SpaceAfter = 0;
                worddoc.Paragraphs.LineUnitAfter = 0;
                Clipboard.Clear();
                sMem.Close();

                path = destFileName;       //设置文件保存路劲
                worddoc.SaveAs(ref path, ref format, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);

                worddoc.Close(ref Nothing, ref Nothing, ref Nothing);  //关闭worddoc文档对象
                wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);   //关闭wordApp组对象

                wordApp = null;


            }
            catch (Exception ex)
            {
                if (worddoc != null)
                {
                    worddoc.Close(ref Nothing, ref Nothing, ref Nothing);  //关闭worddoc文档对象
                }
                if (wordApp != null)
                {
                    wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);   //关闭wordApp组对象
                }
            }
        }
复制代码

 

posted @   HelloLLLLL  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示