C#操作word封装
在项目中添加Microsoft.Office.Interop.Word.dll引用

Code
public class WordAPI
{
private object _template;
private object _newWord;
private Microsoft.Office.Interop.Word.Application wordApp;
private Microsoft.Office.Interop.Word.Document _wordDocument;
private object defaultV = System.Reflection.Missing.Value;
private object documentType;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="template">模板文件位置</param>
/// <param name="newWord">保存位置</param>
public WordAPI(string template,string newWord)
{
this._template = template;
this._newWord = newWord;
wordApp = new Application();
documentType = Microsoft.Office.Interop.Word.WdDocumentType.wdTypeDocument;
_wordDocument = wordApp.Documents.Add(ref _template, ref defaultV, ref documentType, ref defaultV);
}
/// <summary>
/// 设置默认一页行数
/// </summary>
/// <param name="size"></param>
public void SetLinesPage(int size)
{
wordApp.ActiveDocument.PageSetup.LinesPage = 40;
}
/// <summary>
/// 设置书签的值
/// </summary>
/// <param name="markName">书签名</param>
/// <param name="markValue">书签值</param>
public void SetBookMark(string markName, string markValue)
{
object _markName =markName;
try
{
_wordDocument.Bookmarks.get_Item(ref _markName).Range.Text = markValue;
}
catch
{
throw new Exception(markName + "未找到!!");
}
}
/// <summary>
/// 设置添加页眉
/// </summary>
/// <param name="context">内容</param>
public void SetPageHeader(string context)
{
wordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
wordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
wordApp.ActiveWindow.ActivePane.Selection.InsertAfter(context);
wordApp.Selection.ParagraphFormat.Alignment =WdParagraphAlignment.wdAlignParagraphCenter;
//跳出页眉设置
wordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;
}
/// <summary>
/// 当前位置处插入文字
/// </summary>
/// <param name="context">文字内容</param>
/// <param name="fontSize">字体大小</param>
/// <param name="fontColor">字体颜色</param>
/// <param name="fontBold">粗体</param>
/// <param name="familyName">字体</param>
/// <param name="align">对齐方向</param>
public void InsertText(string context, int fontSize, WdColor fontColor, int fontBold,string familyName, WdParagraphAlignment align)
{
//设置字体样式以及方向
wordApp.Application.Selection.Font.Size = fontSize;
wordApp.Application.Selection.Font.Bold = fontBold;
wordApp.Application.Selection.Font.Color = fontColor;
wordApp.Selection.Font.Name = familyName;
wordApp.Application.Selection.ParagraphFormat.Alignment = align;
wordApp.Application.Selection.TypeText(context);
}
/// <summary>
/// 翻页
/// </summary>
public void ToNextPage()
{
object breakPage = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
wordApp.Selection.InsertBreak(ref breakPage);
}
/// <summary>
/// 焦点移动count段落
/// </summary>
/// <param name="count"></param>
public void MoveParagraph(int count)
{
object _count = count;
object wdP= WdUnits.wdParagraph;//换一段落
wordApp.Selection.Move(ref wdP, ref _count);
}
/// <summary>
/// 焦点移动count行
/// </summary>
/// <param name="count"></param>
public void MoveRow(int count)
{
object _count = count;
object WdLine =WdUnits.wdLine;//换一行
wordApp.Selection.Move(ref WdLine, ref _count);
}
/// <summary>
/// 焦点移动字符数
/// </summary>
/// <param name="count"></param>
public void MoveCharacter(int count)
{
object _count = count;
object wdCharacter = WdUnits.wdCharacter;
wordApp.Selection.Move(ref wdCharacter, ref _count);
}
/// <summary>
/// 插入段落
/// </summary>
public void ToNextParagraph()
{
wordApp.Selection.TypeParagraph();//插入段落
}
/// <summary>
/// 回车换行
/// </summary>
public void ToNextLine()
{
wordApp.Selection.TypeParagraph();
}
/// <summary>
/// 当前位置插入图片
/// </summary>
/// <param name="picture"></param>
public void InsertPicture(string picture)
{
//图片居中显示
wordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
wordApp.Application.Selection.InlineShapes.AddPicture(picture, ref defaultV, ref defaultV, ref defaultV);
}
/// <summary>
/// 添加表格
/// </summary>
/// <param name="rowNum"></param>
/// <param name="cellNum"></param>
/// <returns></returns>
public Table CreatTable(int rowNum,int cellNum)
{
return this._wordDocument.Tables.Add(wordApp.Selection.Range, rowNum, cellNum, ref defaultV, ref defaultV);
}
/// <summary>
/// 设置列宽
/// </summary>
/// <param name="widths"></param>
public void SetColumnWidth(float [] widths,Table tb)
{
if (widths.Length > 0)
{
int len =widths.Length;
for (int i = 0; i < len; i++)
{
tb.Columns[i].Width = widths[i];
}
}
}
/// <summary>
/// 合并单元格
/// </summary>
/// <param name="tb"></param>
/// <param name="cells"></param>
public void MergeColumn(Table tb, Cell[] cells)
{
if (cells.Length > 1)
{
Cell c = cells[0];
int len = cells.Length;
for (int i = 1; i < len; i++)
{
c.Merge(cells[i]);
}
}
wordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;
}
/// <summary>
/// 设置单元格内容
/// </summary>
/// <param name="_c"></param>
/// <param name="v"></param>
/// <param name="align">对齐方式</param>
public void SetCellValue(Cell _c, string v, WdParagraphAlignment align)
{
wordApp.Selection.ParagraphFormat.Alignment = align;
_c.Range.Text = v;
}
/// <summary>
/// 保存新文件
/// </summary>
public void SaveAsWord()
{
object doNotSaveChanges =Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
try
{
object fileFormat = WdSaveFormat.wdFormatRTF;
_wordDocument.SaveAs(ref _newWord, ref fileFormat, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV,
ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
disponse();
}
}
/// <summary>
/// 释放资源
/// </summary>
private void disponse()
{
object missingValue = Type.Missing;
object doNotSaveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
_wordDocument.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
wordApp.Application.Quit(ref defaultV, ref defaultV, ref defaultV);
_wordDocument = null;
wordApp = null;
}

C#操作word封装的更多相关文章
- Asp.net操作Word文档,原来这么简单啊!
引用Word对象库文件 具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为 ...
- VC+++ 操作word
最近完成了一个使用VC++ 操作word生成扫描报告的功能,在这里将过程记录下来,开发环境为visual studio 2008 导入接口 首先在创建的MFC项目中引入word相关组件 右键点击 项目 ...
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
XML序列化 #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...
- python操作word、ppt的详解
python使用win32com的心得 python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎 ...
- Java文件操作系列[3]——使用jacob操作word文档
Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...
- .Net Core NOPI操作word(二) 表格操作
一.创建表格操作 private void btnExport_Click(object sender, EventArgs e) { var dbcontext = new BlogModel(); ...
- python操作word入门
1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: ...
- C#中操作Word(1)—— word对象模型介绍
一.开发环境布置 C#中添加对Word的支持,只需添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签页 ...
- C#操作Word的超详细总结
本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置 ...
随机推荐
- Github博客地址
欢迎访问我的Github博客: J.R.Smith_blog
- 【Winform 控件浅谈 】 之 WebBrowser
前言 鄙人才疏学浅,如果说错了,还请各位不吝赐教 1.什么是 WebBrowser 下面是已有的轮子,我想说它们是专业的 http://baike.baidu.com/view/2981935.htm ...
- Rss web 工具 大对比
今天终于神受不了 feedly的链接死掉了..有时候挂代理就好了..但是麻烦. 于是: AOL reader Digg reader feedly 对比下.使用了一天 1.feedly 优: 效果最 ...
- ubuntu下配置protobuf
http://blog.csdn.net/guoyilongedu/article/details/17093811 最近想研究protobuf ,尝试了很多次都没有成功,我用的是ubuntu,在虚拟 ...
- google yeoman
Yeoman是Google的团队和外部贡献者团队合作开发的,他的目标是通过Grunt(一个用于开发任务自动化的命令行工具)和Bower(一个HTML.CSS.Javascript和图片等前端资源的包管 ...
- 【面试&笔试】ASP.NET的相关问题
1. 介绍ASP.NET 答:ASP.NET不是一种语言,而是创建动态web页的一种强大的服务器端技术,它是Microsoft.NETFramework中一套用于生成Web应用程序和Web服 ...
- Linux下安装软件心得
1 软件安装方法: 源代码编译安装:tar.gz等压缩格式,需要经过手动编译,./configure,make ,make install ,然后进行配置操作 二进制安装:tar.gz等压缩格式,解压 ...
- 数学计数原理(Pólya):POJ 1286 Necklace of Beads
Necklace of Beads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7763 Accepted: 3247 ...
- expresscalculate
//本程序接受任意含有+.-.*./和()的数值表达式,数值允许带小数,输入以#结束.如:((2.4+3.5)*2-(2+3.5)/2)*(2+3)# #include <stdio.h> ...
- 《ACM国际大学生程序设计竞赛题解I》——6.10
Pku 1143: Description Christine and Matt are playing an exciting game they just invented: the Number ...