zoukankan      html  css  js  c++  java
  • C#在Word文档指定位置处理表格

     

        正在做的项目里,需要开发一个小工具,将需要的数据插入到Word文档中。这当中有一项需求,要求能够在Word文档中某处插入表格,或者删除该处表格。

        这个小工具是在VS.Net2005、Office2007下开发的。

        1、在Word文档中插入一个书签,书签名称为“tl”;

        2、在VS2005新建一个C#项目,然后在引用中添加Word类库;由于我使用的是Office2007,因此选择的是"Microsoft Word 12.0 Object Library",如果你使用的是Office2003,就应该选择11.0;

        3、在代码顶部添加对Word类库的引用;

    using Word = Microsoft.Office.Interop.Word;

        4、打开Word文档

    object missingValue = System.Reflection.Missing.Value;
                
    object myTrue = false;                  //不显示Word窗口
                object fileName = @"F:\Doc1.doc";
                Word._Application oWord 
    = new Word.ApplicationClass();
                Word._Document oDoc;
                oDoc 
    = oWord.Documents.Open(ref fileName, ref missingValue,
                   
    ref myTrue, ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue);

        5、找到刚才添加的书签

    object tmp = "t1";
                    Word.Range startRange 
    = oWord.ActiveDocument.Bookmarks.get_Item(ref tmp).Range;

        6、删除在该位置的表格

    Word.Table tbl = startRange.Tables[1];
    tbl.Delete();

        如果书签所在的位置并没有插入表格,程序并不会删除该位置下面的表格,而是会抛出异常,报错。

        7、插入表格,并划线

    //添加表格
    oDoc.Tables.Add(startRange, 54ref missingValue, ref missingValue);

    //为表格划线
    startRange.Tables[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle;
    startRange.Tables[
    1].Borders[WdBorderType.wdBorderLeft].LineStyle = WdLineStyle.wdLineStyleSingle;
    startRange.Tables[
    1].Borders[WdBorderType.wdBorderRight].LineStyle = WdLineStyle.wdLineStyleSingle;
    startRange.Tables[
    1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
    startRange.Tables[
    1].Borders[WdBorderType.wdBorderHorizontal].LineStyle = WdLineStyle.wdLineStyleSingle;
    startRange.Tables[
    1].Borders[WdBorderType.wdBorderVertical].LineStyle = WdLineStyle.wdLineStyleSingle;

        全部的代码如下:

    object missingValue = System.Reflection.Missing.Value;
                
    object myTrue = false;                  //不显示Word窗口
                object fileName = @"F:\Doc1.doc";
                Word._Application oWord 
    = new Word.ApplicationClass();
                Word._Document oDoc;
                oDoc 
    = oWord.Documents.Open(ref fileName, ref missingValue,
                   
    ref myTrue, ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue, ref missingValue, ref missingValue,
                   
    ref missingValue);
                
    try
                
    {
                    
    object tmp = "t1";
                    Word.Range startRange 
    = oWord.ActiveDocument.Bookmarks.get_Item(ref tmp).Range;

                    
    //删除指定书签位置后的第一个表格
                    Word.Table tbl = startRange.Tables[1];
                    tbl.Delete();

                    
    //添加表格
                    oDoc.Tables.Add(startRange, 54ref missingValue, ref missingValue);

                    
    //为表格划线
                    startRange.Tables[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle;
                    startRange.Tables[
    1].Borders[WdBorderType.wdBorderLeft].LineStyle = WdLineStyle.wdLineStyleSingle;
                    startRange.Tables[
    1].Borders[WdBorderType.wdBorderRight].LineStyle = WdLineStyle.wdLineStyleSingle;
                    startRange.Tables[
    1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    startRange.Tables[
    1].Borders[WdBorderType.wdBorderHorizontal].LineStyle = WdLineStyle.wdLineStyleSingle;
                    startRange.Tables[
    1].Borders[WdBorderType.wdBorderVertical].LineStyle = WdLineStyle.wdLineStyleSingle;

                }

                
    catch
                
    {
                    
    //异常处理
                }


                
    object bSaveChange = true;
                oDoc.Close(
    ref bSaveChange, ref missingValue, ref missingValue);
                oDoc 
    = null;
                oWord 
    = null;

        代码很简单,在写这实例的过程中我参考了如下资料:
        Word对象模型概述

        Word任务

  • 相关阅读:
    使用cwRsync实现windows下文件定时同步【转】
    asp.net负载均衡方案[转]
    SQL Server复制入门(一)----复制简介【转】
    使用ServiceStackRedis链接Redis简介 [转]
    Sqlserver事务发布实现数据同步
    C#MongoDB 分页查询的方法及性能
    C#基础-Func,Action
    OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
    使用xml-rpc调试openerp模块中的函数
    Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库
  • 原文地址:https://www.cnblogs.com/waynewjp/p/1519163.html
Copyright © 2011-2022 走看看