C# 替换Word文字【包含页眉、页脚、文本框、普通文字的替换】

---使用

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ToWord

{

class Program

{

static void Main(string[] args)

{

string sourceFile = @"c:\users\administrator\documents\visual studio 2012\Projects\ToWord\ToWord\WordModel.doc";

string destFile = @"c:\users\administrator\documents\visual studio 2012\Projects\ToWord\ToWord\Model\WordModel.doc";

//复制文件

System.IO.File.Copy(sourceFile, destFile, true);

WordOperate wordOperate = new WordOperate();

wordOperate.Open(destFile);

wordOperate.Replace("[项目名标签]","神没什么项目的");

wordOperate.Replace("[项目编号签]", "神没什么项目的");

wordOperate.Save();

}

}

}

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.Linq;

using System.Text;

namespace ToWord

{

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();

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);

}

}

}

时间: 2024-08-11 03:50:31

C# 替换Word文字【包含页眉、页脚、文本框、普通文字的替换】的相关文章

C# 操作Word页眉页脚——奇偶页/首页不同、不连续设置页码、复制页眉页脚、锁定页眉页脚、删除页眉

序 ?本文是对Word页眉页脚的操作方法的进一步的阐述.在"C# 添加Word页眉页脚.页码"一文中,介绍了添加简单页眉页脚的方法,该文中的方法可满足于大多数的页眉页脚添加要求,但是对于比较复杂一点的文档,对页眉页脚的添加要求比较严格的,如需要设置奇.偶页的页眉页脚不同.首页页眉页脚不同.设置页码时需要对不同章节的内容设置不同页码.对包含重要信息的页眉页脚需要设置编辑权限.相同性质的文档需要复制指定页眉页脚等等操作,则可以参考本文中的方法.?鉴于此,本文就以上操作要求分以下几个示例要点

c# iText 生成PDF 有文字,图片,表格,文字样式,对齐方式,页眉页脚,等等等,

#region 下载说明书PDF protected void lbtnDownPDF_Click(object sender, EventArgs e) { int pid = ConvertHelper.GetInteger(Request["PID"]); pds = p.GetModel(pid); #region 第一种方法 DataTable datatable = new DataTable(dt.ToString()); try { string Url1 = &quo

word添加页眉脚和设置各页不同的页眉页脚.

添加页眉方法: 首选打开需要添加在页眉的文档,双击文档头部(也就是页眉处),进入页眉页脚编辑模式. 添加自已需要的页眉 翻到页脚处,添加页脚,页脚处我就只添加页码了,在页眉页脚编辑模式下,选择设计选项卡(此选项卡只有在页眉页脚处于编辑模式才会显示).然后选择页码----设置底端-----普通数字2 此时页眉页脚便添加成功了.页眉页脚的特性是设置后所有页面相同,页脚添加的页码是自增类型的,就是每增加一页会自动+1.页眉页脚设置成功后退出页眉页脚编辑模式可直接点击”设计”选项卡下的”关闭页眉页脚本”

使用C#在word中插入页眉页脚

//插入页脚 [csharp] view plaincopyprint? public void InsertFooter(string footer) { if (ActiveWindow.ActivePane.View.Type == WdViewType.wdNormalView || ActiveWindow.ActivePane.View.Type == WdViewType.wdOutlineView) { ActiveWindow.ActivePane.View.Type = Wd

Office WORD如何为每一页设置不同的页眉页脚

如下图所示,我想要为封面和目录,摘要等等设置不同的页眉页脚(一般封面和目录不需要页脚) ? 而从正文开始,套用相同的页眉和以页数作为页脚(注意"第一章 绪论"不是这个文档的第一页) ? 具体实现方法: 1 将光标定位到第一页(在第一页的任意位置都行),点击视图-页眉和页脚.然后输入页眉"封面".点击关闭按钮,这个页眉就做好了. ? 2 往下翻,发现每一页的页眉都是"封面".我的第二页是目录,所以要把页眉改成目录.首先光标定位到第一页的末尾,点击插

【Itext】7步制作Itext5页眉页脚pdf实现第几页共几页

itext5页眉页脚工具类,实现page x of y 完美兼容各种格式大小文档A4/B5/B3,兼容各种文档格式自动计算页脚XY轴坐标 鉴于没人做的这么细致,自己就写了一个itext5页眉页脚工具类,实现第几页/共几页,方便各位刚进入itext的童鞋调用.2013年9月16日 14:51:01 背景:网上流传的都是一些简单的demo,直接扔个A4文档就说实现了,其实很坑的,换个A4横版打印,那些代码就不行了,所以自己搞了这个出来. 如果页面看着排版不好,请移步我的百度空间 :http://hi

itext 生成pdf文件添加页眉页脚

原文来自:https://www.cnblogs.com/joann/p/5511905.html 我只是记录所有jar版本,由于版本冲突及不兼容很让人头疼的,一共需要5个jar, 其中itextpdf是itext的升级版本,并且itextpdf-5.5.jar以上版本算总页数不需要-1,之前版本必须-1: jfinal.jar只能用2.0版本,用3.0的会报版本过高:希望能帮到有需要的人 itextpdf-5.5.13.jar 下载地址:http://central.maven.org/mav

iText + Freemarker实现pdf的导出,支持中文、css以及图片,页眉页脚,页眉添加图片

本文为了记录自己的实现过程,具体的实现步骤是参考博文 https://www.cnblogs.com/youzhibing/p/7692366.html 来实现的,只是在他的基础上添加了页眉页脚及页眉图片 原来是决定采用wkhtmlToPdf将html页面转换为pdf,而且html样式保存的还挺好,但是最后尝试下来发现,他转换不了我们框架中的html页面,将框架中的html页面地址进行转换总是会转换成首页的图片,多次查询无果,最终放弃了,改换成itext工具. 由于我们的需求中要求有页眉和页脚,

word2013怎么设置页眉页脚

word2013怎么设置页眉页脚 1.首先用word2013打开要编辑的文档,将光标定位到要插入页眉和页脚的页首,如下图所示: 2.切换到"页面布局"选项卡下,找到"分隔符--下一页",如下图所示,点击后会在前一页多出一张空白页: 3.在"插入"选项卡下,找到"页眉",点击,然后再其中选择你要的页眉样式,此处用常用样式为例,如下图所示: 4.选择好样式并点击后,就会自动切换到"设计"选项卡下,点击"

页眉页眉,我也是醉了

搞了半个小时,才搞定页眉问题!!!!!!! 一般WORD里面设页眉或页脚常碰到的问题,也就是这些,你看看吧. 以下这些内容对你有很大的帮忙 问:WORD里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同?答:分节,每节可以设置不同的页眉.文件--页面设置--版式--页眉和页脚--首页不同 问:请问word中怎样让每一章用不同的页眉?怎么我现在只能用一个页眉,一改就全部改了?答:在插入分隔符里,选插入分节符,可以选连续的那个,然后下一页改页眉前,按一下"同前"钮,再做的改动就不影