zoukankan      html  css  js  c++  java
  • WordOperate

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    namespace Common
    {
        public class WordOperate : IDisposable
        {
            private Microsoft.Office.Interop.Word._Application _app;
            private Microsoft.Office.Interop.Word._Document _doc;
            object _nullobj = System.Reflection.Missing.Value;
            /// <summary>
            /// 关闭Word进程
            /// </summary>
            public void KillWinword()
            {
                var p = Process.GetProcessesByName("WINWORD");
                if (p.Any()) p[0].Kill();
            }
            /// <summary>
            /// 打开word文档
            /// </summary>
            /// <param name="filePath"></param>
            public void Open(string filePath)
            {
                //_app = new Microsoft.Office.Interop.Word.ApplicationClass();//原版
                _app = new Microsoft.Office.Interop.Word.Application();
                object file = filePath;
                _doc = _app.Documents.Open(
                     ref file, ref _nullobj, ref _nullobj,
                     ref _nullobj, ref _nullobj, ref _nullobj,
                     ref _nullobj, ref _nullobj, ref _nullobj,
                     ref _nullobj, ref _nullobj, ref _nullobj,
                     ref _nullobj, ref _nullobj, ref _nullobj, ref _nullobj);
            }
    
            /// <summary>
            /// 替换word中的文字
            /// </summary>
            /// <param name="strOld">查找的文字</param>
            /// <param name="strNew">替换的文字</param>
            public void Replace(string strOld, string strNew)
            {
                //替换全局Document
                _app.Selection.Find.ClearFormatting();
                _app.Selection.Find.Replacement.ClearFormatting();
                _app.Selection.Find.Text = strOld;
                _app.Selection.Find.Replacement.Text = strNew;
                object objReplace = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
                _app.Selection.Find.Execute(ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref objReplace, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj);
                //替换页脚的字
                foreach (Microsoft.Office.Interop.Word.Section wordSection in _doc.Sections)
                {
                    Microsoft.Office.Interop.Word.Range footerRange = wordSection.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
                    footerRange.Find.ClearFormatting();
                    footerRange.Find.Replacement.ClearFormatting();
                    footerRange.Find.Text = strOld;
                    footerRange.Find.Replacement.Text = strNew;
                    footerRange.Find.Execute(ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref objReplace, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj);
                }
                //替换页眉的字
                foreach (Microsoft.Office.Interop.Word.Section section in _doc.Sections)
                {
                    Microsoft.Office.Interop.Word.Range headerRange = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
                    headerRange.Find.ClearFormatting();
                    headerRange.Find.Replacement.ClearFormatting();
                    headerRange.Find.Text = strOld;
                    headerRange.Find.Replacement.Text = strNew;
                    headerRange.Find.Execute(ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj,
                                           ref _nullobj, ref objReplace, ref _nullobj,
                                           ref _nullobj, ref _nullobj, ref _nullobj);
                }
                //文本框
                Microsoft.Office.Interop.Word.StoryRanges storyRanges = _doc.StoryRanges;
                foreach (Microsoft.Office.Interop.Word.Range range in storyRanges)
                {
                    Microsoft.Office.Interop.Word.Range rangeFlag = range;
                    if (Microsoft.Office.Interop.Word.WdStoryType.wdTextFrameStory == rangeFlag.StoryType)
                    {
                        while (rangeFlag != null)
                        {
                            rangeFlag.Find.ClearFormatting();
                            rangeFlag.Find.Replacement.ClearFormatting();
                            rangeFlag.Find.Text = strOld;
                            rangeFlag.Find.Replacement.Text = strNew;
                            rangeFlag.Find.Execute(ref _nullobj, ref _nullobj, ref _nullobj,
                                                   ref _nullobj, ref _nullobj, ref _nullobj,
                                                   ref _nullobj, ref _nullobj, ref _nullobj,
                                                   ref _nullobj, ref objReplace, ref _nullobj,
                                                   ref _nullobj, ref _nullobj, ref _nullobj);
                            rangeFlag = range.NextStoryRange;
                        }
                    }
                }
    
            }
            /// <summary>
            /// 保存
            /// </summary>
            public void Save(bool disposet = true)
            {
                if (disposet == false)
                {
                    _doc.Save();
                }
                else
                {
                    this.Save(false);
                    this.Dispose();
                    this.KillWinword();
                }
            }
            /// <summary>
            /// 退出
            /// </summary>
            public void Dispose()
            {
                _doc.Close(ref _nullobj, ref _nullobj, ref _nullobj);
                _app.Quit(ref _nullobj, ref _nullobj, ref _nullobj);
            }
        }
    }
  • 相关阅读:
    Ftp、Ftps与Sftp之间的区别
    Previous Workflow Versions in Nintex Workflow
    Span<T>
    .NET Core 2.0及.NET Standard 2.0 Description
    Announcing Windows Template Studio in UWP
    安装.Net Standard 2.0, Impressive
    SQL 给视图赋权限
    Visual Studio for Mac中的ASP.NET Core
    How the Microsoft Bot Framework Changed Where My Friends and I Eat: Part 1
    用于Azure功能的Visual Studio 2017工具
  • 原文地址:https://www.cnblogs.com/lee2011/p/6113501.html
Copyright © 2011-2022 走看看