<转>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, 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值