`
ZOODragon
  • 浏览: 68828 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

<转>C#操作Word辅助类(word2003)

阅读更多

/***************************************************************************
 * word辅助类
 * 作者:chengfellow
 * 日期:2008.8.18
 * 注意事项:
 * 1、开发环境居于office 2003;
 * 2、需要添加Com引用:Microsoft Office 11.0 Object Library和
 *    Microsoft Word 11.0 Object Library。
 * 
 ***************************************************************************
*/


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.IO;

namespace WordAddinSample
{
    
public class WordHelp
    {
        
private Microsoft.Office.Interop.Word.ApplicationClass oWordApplic;    // a reference to Word application
        private Microsoft.Office.Interop.Word.Document oDoc;                    // a reference to the document
        object missing = System.Reflection.Missing.Value;

        
public Microsoft.Office.Interop.Word.ApplicationClass WordApplication
        {
            
get { return oWordApplic; }
        }

        
public WordHelp()
        {
            
// activate the interface with the COM object of Microsoft Word
            oWordApplic = new Microsoft.Office.Interop.Word.ApplicationClass();
        }

        
public WordHelp(Microsoft.Office.Interop.Word.ApplicationClass wordapp)
        {
            oWordApplic 
= wordapp;
        }

        
#region 文件操作

        
// Open a file (the file must exists) and activate it
        public void Open(string strFileName)
        {
            
object fileName = strFileName;
            
object readOnly = false;
            
object isVisible = true;

            oDoc 
= oWordApplic.Documents.Open(ref fileName, ref missing, ref readOnly,
                
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                
ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);

            oDoc.Activate();
        }

        
// Open a new document
        public void Open()
        {
            oDoc 
= oWordApplic.Documents.Add(ref missing, ref missing, ref missing, ref missing);

            oDoc.Activate();
        }

        
public void Quit()
        {
            oWordApplic.Application.Quit(
ref missing, ref missing, ref missing);
        }

        
/// <summary>
        
/// 附加dot模版文件
        
/// </summary>
        private void LoadDotFile(string strDotFile)
        {
            
if (!string.IsNullOrEmpty(strDotFile))
            {
                Microsoft.Office.Interop.Word.Document wDot 
= null;
                
if (oWordApplic != null)
                {
                    oDoc 
= oWordApplic.ActiveDocument;

                    oWordApplic.Selection.WholeStory();

                    
//string strContent = oWordApplic.Selection.Text;

                    oWordApplic.Selection.Copy();
                    wDot 
= CreateWordDocument(strDotFile, true);

                    
object bkmC = "Content";

                    
if (oWordApplic.ActiveDocument.Bookmarks.Exists("Content"== true)
                    {
                        oWordApplic.ActiveDocument.Bookmarks.get_Item
                        (
ref bkmC).Select();
                    }

                    
//对标签"Content"进行填充
                    
//直接写入内容不能识别表格什么的
                    
//oWordApplic.Selection.TypeText(strContent);
                    oWordApplic.Selection.Paste();
                    oWordApplic.Selection.WholeStory();
                    oWordApplic.Selection.Copy();
                    wDot.Close(
ref missing, ref missing, ref missing);

                    oDoc.Activate();
                    oWordApplic.Selection.Paste();

                }
            }
        }

        
///  
        
/// 打开Word文档,并且返回对象oDoc
        
/// 完整Word文件路径+名称  
        
/// 返回的Word.Document oDoc对象 
        public Microsoft.Office.Interop.Word.Document CreateWordDocument(string FileName, bool HideWin)
        {
            
if (FileName == ""return null;

            oWordApplic.Visible 
= HideWin;
            oWordApplic.Caption 
= "";
            oWordApplic.Options.CheckSpellingAsYouType 
= false;
            oWordApplic.Options.CheckGrammarAsYouType 
= false;

            Object filename 
= FileName;
            Object ConfirmConversions 
= false;
            Object ReadOnly 
= true;
            Object AddToRecentFiles 
= false;

            Object PasswordDocument 
= System.Type.Missing;
            Object PasswordTemplate 
= System.Type.Missing;
            Object Revert 
= System.Type.Missing;
            Object WritePasswordDocument 
= System.Type.Missing;
            Object WritePasswordTemplate 
= System.Type.Missing;
            Object Format 
= System.Type.Missing;
            Object Encoding 
= System.Type.Missing;
            Object Visible 
= System.Type.Missing;
            Object OpenAndRepair 
= System.Type.Missing;
            Object DocumentDirection 
= System.Type.Missing;
            Object NoEncodingDialog 
= System.Type.Missing;
            Object XMLTransform 
= System.Type.Missing;
            
try
            {
                Microsoft.Office.Interop.Word.Document wordDoc 
= oWordApplic.Documents.Open(ref filename, ref ConfirmConversions,
                
ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
                
ref Revert, ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
                
ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
                
ref NoEncodingDialog, ref XMLTransform);
                
return wordDoc;

            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                
return null;
            }
        }

        
public void SaveAs(Microsoft.Office.Interop.Word.Document oDoc, string strFileName)
        {
            
object fileName = strFileName;
            
if (File.Exists(strFileName))
            {
                
if (MessageBox.Show("文件'" + strFileName + "'已经存在,选确定覆盖原文件,选取消退出操作!""警告", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    oDoc.SaveAs(
ref fileName, 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);
                }
                
else
                {
                    Clipboard.Clear();
                }
            }
            
else
            {
                oDoc.SaveAs(
ref fileName, 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);
            }
        }

        
public void SaveAsHtml(Microsoft.Office.Interop.Word.Document oDoc, string strFileName)
        {
            
object fileName = strFileName;

            
//wdFormatWebArchive保存为单个网页文件
            
//wdFormatFilteredHTML保存为过滤掉word标签的htm文件,缺点是有图片的话会产生网页文件夹
            if (File.Exists(strFileName))
            {
                
if (MessageBox.Show("文件'" + strFileName + "'已经存在,选确定覆盖原文件,选取消退出操作!""警告", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    
object Format = (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatWebArchive;
                    oDoc.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);
                }
                
else
                {
                    Clipboard.Clear();
                }
            }
            
else
            {
                
object Format = (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatWebArchive;
                oDoc.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);
            }
        }

        
public void Save()
        {
            oDoc.Save();
        }

        
public void SaveAs(string strFileName)
        {
            
object fileName = strFileName;

            oDoc.SaveAs(
ref fileName, 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);
        }

        
// Save the document in HTML format
        public void SaveAsHtml(string strFileName)
        {
            
object fileName = strFileName;
            
object Format = (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML;
            oDoc.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);
        }

        
#endregion

        
#region 添加菜单(工具栏)项

        
//添加单独的菜单项
        public void AddMenu(Microsoft.Office.Core.CommandBarPopup popuBar)
        {
            Microsoft.Office.Core.CommandBar menuBar 
= null;
            menuBar 
= this.oWordApplic.CommandBars["Menu Bar"];
            popuBar 
= (Microsoft.Office.Core.CommandBarPopup)this.oWordApplic.CommandBars.FindControl(Microsoft.Office.Core.MsoControlType.msoControlPopup, missing, popuBar.Tag, true);
            
if (popuBar == null)
            {
                popuBar 
= (Microsoft.Office.Core.CommandBarPopup)menuBar.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlPopup, missing, missing, missing, missing);
            }
        }

        
//添加单独工具栏
        public void AddToolItem(string strBarName,string strBtnName)
        {
            Microsoft.Office.Core.CommandBar toolBar 
= null;
            toolBar 
= (Microsoft.Office.Core.CommandBar)this.oWordApplic.CommandBars.FindControl(Microsoft.Office.Core.MsoControlType.msoControlButton, missing, strBarName, true);
            
if (toolBar == null)
            {
                toolBar 
= (Microsoft.Office.Core.CommandBar)this.oWordApplic.CommandBars.Add(
                     Microsoft.Office.Core.MsoControlType.msoControlButton,
                     missing, missing, missing);
                toolBar.Name 
= strBtnName;
                toolBar.Visible 
= true;
            }
        }

        
#endregion

        
#region 移动光标位置

        
// Go to a predefined bookmark, if the bookmark doesn't exists the application will raise an error
        public void GotoBookMark(string strBookMarkName)
        {
            
// VB :  Selection.GoTo What:=wdGoToBookmark, Name:="nome"
            object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
            
object NameBookMark = strBookMarkName;
            oWordApplic.Selection.GoTo(
ref Bookmark, ref missing, ref missing, ref NameBookMark);
        }

        
public void GoToTheEnd()
        {
            
// VB :  Selection.EndKey Unit:=wdStory
            object unit;
            unit 
= Microsoft.Office.Interop.Word.WdUnits.wdStory;
            oWordApplic.Selection.EndKey(
ref unit, ref missing);
        }

        
public void GoToLineEnd()
        {
            
object unit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
            
object ext = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
            oWordApplic.Selection.EndKey(
ref unit, ref ext);
        }

        
public void GoToTheBeginning()
        {
            
// VB : Selection.HomeKey Unit:=wdStory
            object unit;
            unit 
= Microsoft.Office.Interop.Word.WdUnits.wdStory;
            oWordApplic.Selection.HomeKey(
ref unit, ref missing);
        }

        
public void GoToTheTable(int ntable)
        {
            
//    Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=1, Name:=""
            
//    Selection.Find.ClearFormatting
            
//    With Selection.Find
            
//        .Text = ""
            
//        .Replacement.Text = ""
            
//        .Forward = True
            
//        .Wrap = wdFindContinue
            
//        .Format = False
            
//        .MatchCase = False
            
//        .MatchWholeWord = False
            
//        .MatchWildcards = False
            
//        .MatchSoundsLike = False
            
//        .MatchAllWordForms = False
            
//    End With

            
object what;
            what 
= Microsoft.Office.Interop.Word.WdUnits.wdTable;
            
object which;
            which 
= Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToFirst;
            
object count;
            count 
= 1;
            oWordApplic.Selection.GoTo(
ref what, ref which, ref count, ref missing);
            oWordApplic.Selection.Find.ClearFormatting();

            oWordApplic.Selection.Text 
= "";
        }

        
public void GoToRightCell()
        {
            
// Selection.MoveRight Unit:=wdCell
            object direction;
            direction 
= Microsoft.Office.Interop.Word.WdUnits.wdCell;
            oWordApplic.Selection.MoveRight(
ref direction, ref missing, ref missing);
        }

        
public void GoToLeftCell()
        {
            
// Selection.MoveRight Unit:=wdCell
            object direction;
            direction 
= Microsoft.Office.Interop.Word.WdUnits.wdCell;
            oWordApplic.Selection.MoveLeft(
ref direction, ref missing, ref missing);
        }

        
public void GoToDownCell()
        {
            
// Selection.MoveRight Unit:=wdCell
            object direction;
            direction 
= Microsoft.Office.Interop.Word.WdUnits.wdLine;
            oWordApplic.Selection.MoveDown(
ref direction, ref missing, ref missing);
        }

        
public void GoToUpCell()
        {
            
// Selection.MoveRight Unit:=wdCell
            object direction;
            direction 
= Microsoft.Office.Interop.Word.WdUnits.wdLine;
            oWordApplic.Selection.MoveUp(
ref direction, ref missing, ref missing);
        }

        
#endregion

        
#region 插入操作

        
public void InsertText(string strText)
        {
            oWordApplic.Selection.TypeText(strText);
        }

        
public void InsertLineBreak()
        {
            oWordApplic.Selection.TypeParagraph();
        }

        
/// <summary>
        
/// 插入多个空行
        
/// </summary>
        
/// <param name="nline"></param>
        public void InsertLineBreak(int nline)
        {
            
for (int i = 0; i < nline; i++)
                oWordApplic.Selection.TypeParagraph();
        }

        
public void InsertPagebreak()
        {
            
// VB : Selection.InsertBreak Type:=wdPageBreak
            object pBreak = (int)Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
            oWordApplic.Selection.InsertBreak(
ref pBreak);
        }

        
// 插入页码
        public void InsertPageNumber()
        {
            
object wdFieldPage = Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage;
            
object preserveFormatting = true;
            oWordApplic.Selection.Fields.Add(oWordApplic.Selection.Range, 
ref wdFieldPage, ref missing, ref preserveFormatting);
        }

        
// 插入页码
        public void InsertPageNumber(string strAlign)
        {
            
object wdFieldPage = Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage;
            
object preserveFormatting = true;
            oWordApplic.Selection.Fields.Add(oWordApplic.Selection.Range, 
ref wdFieldPage, ref missing, ref preserveFormatting);
            SetAlignment(strAlign);
        }

        
public void InsertImage(string strPicPath, float picWidth, float picHeight)
        {
            
string FileName = strPicPath;
            
object LinkToFile = false;
            
object SaveWithDocument = true;
            
object Anchor = oWordApplic.Selection.Range;
            oWordApplic.ActiveDocument.InlineShapes.AddPicture(FileName, 
ref LinkToFile, ref SaveWithDocument, ref Anchor).Select();
            oWordApplic.Selection.InlineShapes[
1].Width = picWidth; // 图片宽度 
            oWordApplic.Selection.InlineShapes[1].Height = picHeight; // 图片高度

            
// 将图片设置为四面环绕型 
            Microsoft.Office.Interop.Word.Shape s = oWordApplic.Selection.InlineShapes[1].ConvertToShape();
            s.WrapFormat.Type 
= Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare;
        }

        
public void InsertLine(float left, float top, <span style

分享到:
评论

相关推荐

    C#操作word辅助类

    C#操作word辅助类 有关类中函数的用法和解释说明

    C# 操作 Word 代码大全

    包括: ...C#操作WORD辅助类.txt c#操作word模板插入文字、图片及表格.doc C#操作Word在Word文档中插入图片.docx C#用word模板做文档.doc 收集的C#操作Word的各种代码。直接复制粘贴到程序里面即可。

    word辅助类 c#语言写的

    根据提供的文件信息,我们可以总结出一个关于 C# 编程语言中用于操作 Microsoft Word 的辅助类库的相关知识点。 ### C# 中的 Word 辅助类库 #### 1. 类库简介 该辅助类库是使用 C# 语言编写的,主要用于在 .NET ...

    C#操作word文档记录

    在本文中,我们将深入探讨如何使用C#编程语言来操作Microsoft Word文档。C#提供了与Office应用程序交互的能力,使得开发者可以创建、修改和管理Word文档,这在各种业务场景中都非常有用。 ### 一、创建程序 首先,...

    C#word转pdf

    标题 "C# word转pdf" 描述中涉及的是在C#编程环境下,将Word文档转换为PDF文件的技术。这项技术通常用于实现文档格式的互换,以便于在不同的设备或平台间共享,或者为了保持文档的布局一致性。下面将详细阐述相关...

    C# NPOI导出Excel,Words转PDF

    最后,提到的“Win.Util.Offices”可能是包含一些辅助工具或类库的文件夹,可能包含与Office文档操作相关的实用程序。在实际项目中,这样的工具集可能会提供一些便利的功能,比如简化NPOI和Aspose.Words的使用,或者...

    C#的word处理类

    综上所述,"C#的word处理类"通常涉及使用C#操作Word文档的技能,包括理解Open XML结构,利用Open XML SDK或第三方库如NPOI进行文档创建、编辑和格式化。在处理Word文档时,开发者需要考虑兼容性、性能以及功能的全面...

    C#实现分词辅助帮助类

    在C#编程环境中,开发一个分词辅助帮助类是一个常见的任务,特别是在处理自然语言处理(NLP)项目或者文本分析应用中。分词是将连续的文本字符串分割成单独的词汇单元,这些单元称为词元,是理解文本内容的基础。...

    C#采用OpenXml给word里面插入图片

    在C#编程中,使用OpenXml库来操作Microsoft Word文档是一种常见的需求,特别是涉及到文档内容的动态生成和编辑。OpenXml SDK(Software Development Kit)提供了一组强大的API,可以直接操作WordprocessingML(Word...

    C#221仿word源程序

    【标题】"C#221仿word源程序"是一个基于C#编程语言开发的项目,旨在实现一个类似于Microsoft Word的文字处理软件。这个项目可能是为了教学、实践或研究目的,帮助开发者了解如何在C#环境下构建类似Word的功能。 ...

    C# 利用word模板生成报告

    在提供的压缩包文件“CSharp_word”中,可能包含示例代码、模板文件和必要的辅助工具,用于演示上述过程。通过学习和理解这些代码,开发者可以快速掌握使用C#和Word模板生成报告的技术。 总之,C#结合Word模板生成...

    npoi导出word2007辅助类

    在“npoi导出word2007辅助类”的场景中,开发者通常会创建一个辅助类来简化Word文档的生成过程。这个辅助类可能包含各种方法,用于根据预定义的模板导出Word文档,如替换段落中的文本、处理表格内容以及插入或替换...

    c#模板导出word

    总的来说,C#模板导出Word是一项涉及多个层面的技术工作,包括选择合适的库、理解和操作Word文档结构、进行数据绑定以及处理可能出现的问题。通过掌握这些知识,开发者可以高效地创建出满足需求的自定义Word文档。

    C#操作Word文档

    1、本报告为2011年高考考生在《高考志愿填报辅助系统》中使用“模拟填报评估”功能时所生成的志愿填报分析报告。 2、由于在高考录取中,提前批次、本科三批和高职专科批三个批次的录取存在诸多不确定因素(身体要求...

    C#公共通用类

    XML操作类(XmlHelper.cs) ----------Format-------------- 参数验证的通用验证程序。(ArgumentValidation.cs) 这个类提供了实用方法的字节数组和图像之间的转换。(ByteImageConvertor.cs) byte字节数组操作辅助类...

    C#公共类通用类非常齐全

    XML操作类(XmlHelper.cs) ----------Format-------------- 参数验证的通用验证程序。(ArgumentValidation.cs) 这个类提供了实用方法的字节数组和图像之间的转换。(ByteImageConvertor.cs) byte字节数组操作辅助类...

    C#语法学习—(word版)

    除此之外,C#还有丰富的集合框架,如数组、列表(List&lt;T&gt;)、字典(Dictionary&lt;TKey, TValue&gt;)等,为数据存储和操作提供了便利。LINQ(Language Integrated Query)是C#的一个重要特性,它允许开发者使用一致的查询语法...

    c# office编程之pdf word Exls篇

    本篇文章将深入探讨C#在处理Office文档,包括PDF、Word和Excel方面的编程知识。 首先,我们来关注PDF(Portable Document Format)文件。C#中处理PDF文件并不像处理Word或Excel那样直接,因为PDF格式本身是静态的,...

    C#调用java类、jar包方法

    IKVM.NET提供了一些辅助类来进行转换,例如`Java.Util.ArrayList`到`System.Collections.Generic.List&lt;T&gt;`。 **加解密场景** 在标签中提到了加解密,假设你有一个Java加密库封装在jar包里,你可以按上述步骤在C#中...

Global site tag (gtag.js) - Google Analytics