在项目中添加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封装的更多相关文章

  1. Asp.net操作Word文档,原来这么简单啊!

    引用Word对象库文件  具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为 ...

  2. VC+++ 操作word

    最近完成了一个使用VC++ 操作word生成扫描报告的功能,在这里将过程记录下来,开发环境为visual studio 2008 导入接口 首先在创建的MFC项目中引入word相关组件 右键点击 项目 ...

  3. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  4. python操作word、ppt的详解

    python使用win32com的心得   python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎 ...

  5. Java文件操作系列[3]——使用jacob操作word文档

    Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...

  6. .Net Core NOPI操作word(二) 表格操作

    一.创建表格操作 private void btnExport_Click(object sender, EventArgs e) { var dbcontext = new BlogModel(); ...

  7. python操作word入门

    1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: ...

  8. C#中操作Word(1)—— word对象模型介绍

    一.开发环境布置 C#中添加对Word的支持,只需添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签页 ...

  9. C#操作Word的超详细总结

    本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置 ...

随机推荐

  1. PHP调试工具Xdebug安装配置教程

    说道PHP代码调试,对于有经验的PHPer,通过echo.print_r.var_dump函数,或PHP开发工具zend studio.editplus可解决大部分问题,但是对于PHP入门学习的童鞋来 ...

  2. Javascript学习之函数(function)

    在JS中,Function(函数)类型实际上是对象;每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针. 一 函 ...

  3. [BZOJ 3626] [LNOI2014] LCA 【树链剖分 + 离线 + 差分询问】

    题目链接: BZOJ - 3626 题目分析 考虑这样的等价问题,如果我们把一个点 x 到 Root 的路径上每个点的权值赋为 1 ,其余点的权值为 0,那么从 LCA(x, y) 的 Depth 就 ...

  4. Dungeon Master

    poj2251:http://poj.org/problem?id=2251 题意:给你一个三维的立方体,然后给你一个起点,和终点的坐标.然后让你求从起点到终点的最短路程.题解:该题就是求三维的最短路 ...

  5. codeforces C. Booking System

    题意:有n组客人,分别告诉每一组的个数和花费,然后给你餐厅内k个桌子,每个桌子的最大容纳人数,如何安排使得餐厅最大收益并且容纳人数尽可能大: 思路:贪心,对花费排序,然后对每一组客人找桌子就可以. # ...

  6. mysql处理字符串的两个绝招:substring_index,concat

    mysql处理字符串的两个绝招:substring_index,concat 最近老是碰到要处理数据库中字符串的处理,发现用来用去也就是这两个函数: 1.substring_index(str,del ...

  7. SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录

    14.5.2.4 Locking Reads 锁定读: 如果你查询数据然后插入或者修改相关数据在相同的事务里, 常规的SELECT 语句不能给予足够的保护. 其他事务可以修改或者删除你刚查询相同的记录 ...

  8. libc.so.6 误删后修复

    libc.so.6 误删后修复  libc.so.6 被删除了(libc.so.6只是个链接,真实的lib 文件是 libc-2.15.so) su, sudo,ls, cp, mv 等等一系列命令都 ...

  9. The fundamental knowledge of Node JS.

    D3 JSJava scirpt is an awesome language for Internface Design.All Obejcts in JavaScirpt could be use ...

  10. 浅度围观SBJson

    JSON JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度, 那么,JSON到底是什么? JSON就是一串字符串 只不 ...