ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2022-05-19 17:35:29  阅读:166  来源: 互联网

标签:sMem Word windows worddoc wordApp Html Nothing ref


首先是把Html复制到剪贴板 见:https://www.cnblogs.com/HelloQLQ/p/16289343.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组对象
                }
            }
        }

 

标签:sMem,Word,windows,worddoc,wordApp,Html,Nothing,ref
来源: https://www.cnblogs.com/HelloQLQ/p/16289371.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有