C#操作word类文件
最近频繁操作Word文档,写了很多word的操作代码及方法,虽然已经有很多关于word的操作类了,自己还是进行了一下整合:
1、通过模板创建新文件
2、在书签处插入值
3、插入表格
4、合并单元格
5、设置单元格内容对齐方式
6、设置表格字体
7、是否使用边框
8、给第N个表格添加行
9、给表格添加一行
10、给第N个表格添加N行
11、填充表格的单元格
12、给第N个表格插入内容
13、给表格插入一行数据
14、插入指定高宽图片
15、插入图片
16、插入一段文字
17、保存文档
18、关闭Word进程

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop.Word; namespace FD.Utility
{
/// <summary>
/// word操作类
/// </summary>
public class DocHelper
{
private _Application wordApp = null;
private _Document wordDoc = null; public _Application Applicaton
{
get { return wordApp; }
set { wordApp = value; }
} public _Document WordDoc
{
get { return wordDoc; }
set { wordDoc = value; }
} /// <summary>
/// 通过模板创建新文件
/// </summary>
/// <param name="filePath"></param>
public void CreateNewDocument(string filePath)
{
//killWnWordProcess();
wordApp = new ApplicationClass();
wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
wordApp.Visible = false;
object missing = System.Reflection.Missing.Value;
object templateName = filePath;
wordDoc = wordApp.Documents.Open(ref templateName, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing);
} /// <summary>
/// 保存文档
/// </summary>
/// <param name="filePath"></param>
public void SaveDocument(string filePath)
{
object fileName = filePath;
object format = WdSaveFormat.wdFormatDocument; //保存格式
object missing = System.Reflection.Missing.Value;
wordDoc.SaveAs(ref fileName, ref format, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);
//关闭wordDoc,wordApp对象
object saveChanges = WdSaveOptions.wdSaveChanges;
object originalFormat = WdOriginalFormat.wdOriginalDocumentFormat;
object routeDocument = false;
wordDoc.Close(ref saveChanges, ref originalFormat, ref routeDocument);
wordApp.Quit(ref saveChanges, ref originalFormat, ref routeDocument);
} /// <summary>
/// 在书签处插入值
/// </summary>
/// <param name="bookmark">书签</param>
/// <param name="value">要插入的值</param>
/// <returns></returns>
public bool InsertValue(string bookmark, string value)
{
object bkObj = bookmark;
if (wordApp.ActiveDocument.Bookmarks.Exists(bookmark))
{
wordApp.ActiveDocument.Bookmarks.get_Item(ref bkObj).Select();
wordApp.Selection.TypeText(value);
return true;
}
return false;
} /// <summary>
///插入表格
/// </summary>
/// <param name="bookmark">书签</param>
/// <param name="rows"></param>
/// <param name="columns"></param>
/// <param name="width"></param>
/// <returns></returns>
public Table InsertTable(string bookmark, int rows, int columns, float width)
{
object miss = System.Reflection.Missing.Value;
object oStart = bookmark;
Range range = wordDoc.Bookmarks.get_Item(ref oStart).Range; //表格插入位置
Table newTable = wordDoc.Tables.Add(range, rows, columns, ref miss, ref miss);
newTable.Borders.Enable = ;//允许有边框,默认没有边框,(1,实现边框,2/3,虚线边框)
newTable.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth050pt;//边框宽度
if (width != )
{
newTable.PreferredWidth = width; //表格宽度
}
newTable.AllowPageBreaks = false;
return newTable;
} /// <summary>
/// 合并单元格
/// </summary>
/// <param name="table">表</param>
/// <param name="row1">开始行号</param>
/// <param name="column1">开始列号</param>
/// <param name="row2">结束行号</param>
/// <param name="column2">结束列号</param>
public void MergeCell(Microsoft.Office.Interop.Word.Table table, int row1, int column1, int row2, int column2)
{
table.Cell(row1, column1).Merge(table.Cell(row2, column2));
}
/// <summary>
/// 设置表格内容对齐方式
/// </summary>
/// <param name="table">表</param>
/// <param name="Align">水平方向:-1,左对齐;0,居中;1,右对齐</param>
/// <param name="Vertical">垂直方向:-1,顶端;0,居中;1,底端</param>
public void SetParagraph_Table(Microsoft.Office.Interop.Word.Table table, int Align, int Vertical)
{
switch (Align)
{
case -:
table.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
break;
case :
table.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
break;
case :
table.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
break;
}
switch (Vertical)
{
case -:
table.Range.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalTop;
break;
case :
table.Range.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;
break;
case :
table.Range.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalBottom;
break;
}
} /// <summary>
/// 设置表格字体
/// </summary>
/// <param name="table"></param>
/// <param name="fontName"></param>
/// <param name="size"></param>
public void SetFont_Table(Microsoft.Office.Interop.Word.Table table, string fontName, double size)
{
if (size != )
{
table.Range.Font.Size = Convert.ToSingle(size);
}
if (fontName != "")
table.Range.Font.Name = fontName;
} /// <summary>
/// 是否使用边框
/// </summary>
/// <param name="n">表格的序号</param>
/// <param name="use">是或否</param>
public void UseBroder(int n, bool use)
{
if (use)
wordDoc.Content.Tables[n].Borders.Enable = ;
else
wordDoc.Content.Tables[n].Borders.Enable = ;
} /// <summary>
/// 给第n个表格添加行
/// </summary>
/// <param name="n"></param>
public void AddRow(int n)
{
object miss = System.Reflection.Missing.Value;
wordDoc.Content.Tables[n].Rows.Add(ref miss);
} /// <summary>
/// 给表格添加一行
/// </summary>
/// <param name="table"></param>
public void AddRows(Microsoft.Office.Interop.Word.Table table)
{
object miss = System.Reflection.Missing.Value;
table.Rows.Add(ref miss);
}
/// <summary>
/// 给表格添加行
/// </summary>
/// <param name="n">第n个表格</param>
/// <param name="rows">添加的行数</param>
public void AddRow(int n, int rows)
{
object miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Table table = wordDoc.Content.Tables[n];
for (int i = ; i < rows; i++)
{
table.Rows.Add(ref miss);
}
}
/// <summary>
/// 填充表格的单元格
/// </summary>
/// <param name="table">表格</param>
/// <param name="row">行号</param>
/// <param name="column">列号</param>
/// <param name="value">插入的内容</param>
public void InsertCell(Microsoft.Office.Interop.Word.Table table, int row, int column, string value)
{
table.Cell(row, column).Range.Text = value;
} /// <summary>
/// 给文档中第n个表格插入内容
/// </summary>
/// <param name="n"></param>
/// <param name="row">行号</param>
/// <param name="column">列号</param>
/// <param name="value">插入的内容</param>
public void InsertCell(int n, int row, int column, string value)
{
wordDoc.Content.Tables[n].Cell(row, column).Range.Text = value; } /// <summary>
/// 给表格插入一行数据
/// </summary>
/// <param name="n">文档中表格的序号</param>
/// <param name="row">行号</param>
/// <param name="columns">列数</param>
/// <param name="values">插入的值</param>
public void InsertCell(int n, int row, int columns, string[] values)
{
Microsoft.Office.Interop.Word.Table table = wordDoc.Content.Tables[n];
for (int i = ; i < columns; i++)
table.Cell(row, i + ).Range.Text = values[i];
} /// <summary>
/// 插入图片
/// </summary>
/// <param name="bookmark"></param>
/// <param name="picturePath"></param>
/// <param name="width"></param>
/// <param name="hight"></param>
public void InsertPicture(string bookmark, string picturePath, float width, float hight)
{
object miss = System.Reflection.Missing.Value;
object oStart = bookmark;
object linkToFile = false; //图片不为外部链接
object saveWithDocment = true; //图片随文档一起保存
object range = wordDoc.Bookmarks.get_Item(ref oStart).Range; //图片插入位置
wordDoc.InlineShapes.AddPicture(picturePath, ref linkToFile, ref saveWithDocment, ref range);
wordDoc.Application.ActiveDocument.InlineShapes[].Width = width;
wordDoc.Application.ActiveDocument.InlineShapes[].Height = hight;
}
/// <summary>
/// 插入图片
/// </summary>
/// <param name="bookmark"></param>
/// <param name="picturePath"></param>
public void InsertPicture(string bookmark, string picturePath)
{
object miss = System.Reflection.Missing.Value;
object oStart = bookmark;
object linkToFile = false; //图片不为外部链接
object saveWithDocment = true; //图片随文档一起保存
object range = wordDoc.Bookmarks.get_Item(ref oStart).Range; //图片插入位置
wordDoc.InlineShapes.AddPicture(picturePath, ref linkToFile, ref saveWithDocment, ref range);
} /// <summary>
/// 插入一段文字
/// </summary>
/// <param name="bookmark"></param>
/// <param name="text"></param>
public void InsertText(string bookmark, string text)
{
object oStart = bookmark;
object range = wordDoc.Bookmarks.get_Item(ref oStart).Range;
Paragraph wp = wordDoc.Content.Paragraphs.Add(ref range);
wp.Format.SpaceBefore = ;
wp.Range.Text = text;
wp.Format.SpaceAfter = ;
wp.Range.InsertParagraphAfter();
wordDoc.Paragraphs.Last.Range.Text = "\n";
} /// <summary>
/// 关闭Word进程
/// </summary>
public void killWnWordProcess()
{
System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD");
foreach (System.Diagnostics.Process process in processes)
{
bool b = process.MainWindowTitle == "";
if (process.MainWindowTitle == "")
{
process.Kill();
}
}
}
}
}

QQ交流群:200034305
C#操作word类文件的更多相关文章
- Csharp 简单操作Word模板文件
原文:Csharp 简单操作Word模板文件 1.创建一个模板的Word文档 Doc1.dot 内容为: To: <Name> Sub:<Subject> Website i ...
- c#操作word类,进行html和word文档的互相转换
实例引用:http://www.7es.cn/Software_development/171.shtml using Microsoft.Office.Core;using Word = Micro ...
- C#操作Word的+ CKEditor 輸出成Word文件(包含圖案上傳)
C#操作Word 参考博文: C#操作word类文件 https://www.cnblogs.com/walking/p/3571068.html C#中的Office操作专栏(21) http:// ...
- Java文件操作系列[3]——使用jacob操作word文档
Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...
- 使用POI导出Word(含表格)的实现方式及操作Word的工具类
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- [C#] 常用工具类——文件操作类
/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在&l ...
- [FTP] FTPClient--FTP操作帮助类,上传下载,文件,目录操作 (转载)
点击下载 FTPClient.zip 这个类是关于FTP客户端的操作1.构造函数 2.字段 服务器账户密码3.属性4.链接5.传输模式6.文件操作7.上传和下载8.目录操作9.内容函数看下面代码吧 / ...
- C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作
FROM :http://www.sufeinet.com/forum.php?mod=viewthread&tid=1736&extra=page%3D1%26filter%3Dty ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
随机推荐
- 工具:SVN的Web客户端(ViewVC、SVNWebClient、sventon)和任务管理(Trac、Collaboa)
http://www.blogjava.net/evanwhj/archive/2006/04/06/39498.aspx 在前面一篇文章中,痛诉了安装ViewVC for Subversion的种种 ...
- linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法,ssh-bash-4.1
linux系统新建的用户用ssh远程登陆显示-bash-4.1$,不显示用户名路径 网络上好多解决办法,大多是新建.bash_profile文件然后输入XXXXX....然而并没有什么用没有用.... ...
- Fort.js – 时尚、现代的进度提示效果
Fort.js 是表单填写进度提示效果的 JavaScript 库.使用很easy. 提供了Default.Gradient.Sections 以及 Flash 四种效果 用Fort.js非常easy ...
- OpenGL核心之SSAO技术解说(一)
笔者介绍:姜雪伟,IT公司技术合伙人.IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...
- Objective-C中的@Property具体解释
Objective-C中的@Property具体解释 @Property (属性) class vairs 这个属性有nonatomic. strong. weak, retain. copy等等 我 ...
- spring sessionFactory 属性配置详解,applicationContext中各种属性详解
1.Bean的id为sessionFactory,对应的类为AnnotationSessionFactory,即采用注解的形式实现hibernate. 2.hibernateProperties,配置 ...
- C# - 关于过期Token的解决方案
使用static来定义变量和过期时间 //===================== 初始化静态数据 ========================== #region ); //Access_To ...
- MySQL "replace into" 的坑以及insert相关操作
下面我们主要说一下在插入时候的几种情况: 1:insert ignore 2:replace into 3:ON DUPLICATE KEY UPDATE 关于insert ignore: 关于rep ...
- Windows中将javac和java两个命令集成到UltraEdit工具栏
1. 目的 将javac和java两个命令集成到UltraEdit工具栏,以方便在UltraEdit中编辑简单的java文件后,能够直接进行编译,运行. 2. 环境 UrtalEdit版本18.20: ...
- 使用jQuery的ajax同步请求吃过的亏
jQuery是一个非经常常使用的js库.甚至我们开发不论什么一个项目都首先把jquery导入进行.jQuery太过强大,使用起来非常方便.可是在使用的过程中也遇到过非常多坑.我在这里分享一下.避免大家 ...