关于如何将word文件读入RichTextBox

关于如何将word文件读入RichTextBox

我在别的论坛经常看到有的朋友们问怎么样将word文件读入到richtextbox,(包括图片)而且要求如要修改后能保存,我想的一个办法:使用剪贴板的办法。我做了一个类,可以用于我们以后开发WORD的程序:
1、在运行这个程序之前请先导入三个dll  它们是:Interop.Microsoft.Office.Core.dll、Interop.VBIDE.dll、Interop.Word.dll)它们如何得到请查看一下以前的贴子,有很多是讲如何将com组件转为受限代码的。如果实现找不到也可以和我联系,我发给你!huanghai@bdfsz.com.cn 

2、其实我们可以这样控制word ,在启动word后选录制新宏,开始我们的动作,比如我们想看一下用VBA如何控制全选-复制-剪切,就可以用这个办法。停止录制。用VBA编辑器看一下代码吧!

 

 

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;


namespace WordApplication
{
public class Form1 : System.Windows.Forms.Form
{
 private System.Windows.Forms.Button button1;
 private System.Windows.Forms.RichTextBox richTextBox1;
 private System.Windows.Forms.OpenFileDialog openFileDialog1;
 private System.Windows.Forms.Button button2;
 private System.ComponentModel.Container components = null;

 public Form1()
 {
  InitializeComponent();
 }

 protected override void Dispose( bool disposing )
 {
  if( disposing )
  {
  if (components != null)
  {
   components.Dispose();
  }
  }
  base.Dispose( disposing );
 }

 #region Windows Form Designer generated code
 /// <summary>
 /// Required method for Designer support - do not modify
 /// the contents of this method with the code editor.
 /// </summary>
 private void InitializeComponent()
 {
  this.button1 = new System.Windows.Forms.Button();
  this.richTextBox1 = new System.Windows.Forms.RichTextBox();
  this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
  this.button2 = new System.Windows.Forms.Button();
  this.SuspendLayout();
  //
  // button1
  //
  this.button1.Location = new System.Drawing.Point(72, 296);
  this.button1.Name = "button1";
  this.button1.Size = new System.Drawing.Size(120, 32);
  this.button1.TabIndex = 0;
  this.button1.Text = "开始读取";
  this.button1.Click += new System.EventHandler(this.button1_Click);
  //
  // richTextBox1
  //
  this.richTextBox1.Location = new System.Drawing.Point(16, 16);
  this.richTextBox1.Name = "richTextBox1";
  this.richTextBox1.Size = new System.Drawing.Size(432, 264);
  this.richTextBox1.TabIndex = 1;
  this.richTextBox1.Text = "";
  //
  // openFileDialog1
  //
  this.openFileDialog1.DefaultExt = "*.doc";
  this.openFileDialog1.Filter = "Word文件|*.doc";
  //
  // button2
  //
  this.button2.Location = new System.Drawing.Point(248, 296);
  this.button2.Name = "button2";
  this.button2.Size = new System.Drawing.Size(128, 32);
  this.button2.TabIndex = 2;
  this.button2.Text = "修改后保存";
  this.button2.Click += new System.EventHandler(this.button2_Click);
  //
  // Form1
  //
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  this.ClientSize = new System.Drawing.Size(496, 365);
  this.Controls.Add(this.button2);
  this.Controls.Add(this.richTextBox1);
  this.Controls.Add(this.button1);
  this.Name = "Form1";
  this.Text = "这是一个用于读取WORD文件到RICHEDIT的例子";
  this.ResumeLayout(false);

 }
 #endregion

 [STAThread]
 static void Main()
 {
  Application.Run(new Form1());
 }

 private void button1_Click(object sender, System.EventArgs e)
 {
  richTextBox1.Clear();
  openFileDialog1.ShowDialog();
  if(openFileDialog1.FileName!="")
  {
  CCWordApp test ;
  test = new CCWordApp();
  test.Open (openFileDialog1.FileName);
  test.CopyAll();
  richTextBox1.Paste();
  test.Quit();
   }
   

 }

 private void button2_Click(object sender, System.EventArgs e)
 {
 
    richTextBox1.SelectAll();
    richTextBox1.Copy();
 
    CCWordApp test ;
  
    test = new CCWordApp();
 
   //上面代码正常 

  test.Open (openFileDialog1.FileName);
    test.Clear(); 
    test.PasetAll();
        
        test.Save();  
    test.Quit();

  
 }
}

public class CCWordApp
{
 private Word.ApplicationClass oWordApplic; // a reference to Word application
 private Word.Document oDoc;   // a reference to the document
 
 
 public CCWordApp()
 {
 
  oWordApplic = new Word.ApplicationClass();
 }

 
 public void Open( string strFileName)
 {
  object fileName = strFileName;
  object readOnly = false;
  object isVisible = true;
  object missing = System.Reflection.Missing.value;

  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);

  oDoc.Activate(); 
 } 


 
 public void Open( )
 {
  object missing = System.Reflection.Missing.value;
  oDoc = oWordApplic.Documents.Add(ref missing, ref missing,ref missing, ref missing);

  oDoc.Activate(); 
 } 

 

 public void Quit( )
 {
  object missing = System.Reflection.Missing.value;
  oWordApplic.Application.Quit(ref missing, ref missing, ref missing);
 } 

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

 public void SaveAs(string strFileName )
 {
  object missing = System.Reflection.Missing.value;
  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);
 } 


 public void SaveAsHtml(string strFileName )
 {
  object missing = System.Reflection.Missing.value;
  object fileName = strFileName;
  object Format = (int)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);
  oDoc.Close(ref missing ,ref missing,ref missing);
   
 }
 public void CopyAll()
 {
  oWordApplic.Selection.WholeStory();
  oWordApplic.Selection.Copy();
 
 }
 public void PasetAll()
 {
 
  oWordApplic.Selection.PasteAndFormat(Word.WdRecoveryType.wdPasteDefault);
 

 }
 public void Clear()
 {
    
  object Unit=(int)Word.WdUnits.wdCharacter;
  object Count=1;
  oWordApplic.Selection.WholeStory();
  oWordApplic.Selection.Delete(ref Unit,ref Count);
 }

 

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

 public void InsertLineBreak( )
 {
  oWordApplic.Selection.TypeParagraph();
 }
 public void InsertLineBreak( int nline)
 {
  for (int i=0; i<nline; i++)
  oWordApplic.Selection.TypeParagraph();
 }

 
 public void SetAlignment(string strType )
 {
  switch (strType)
  {
  case "Center" :
   oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
   break;
  case "Left" :
   oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
   break;
  case "Right" :
   oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;
   break;
  case "Justify" :
   oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify;
   break;
  }

 }


 
 public void SetFont( string strType )
 {
  switch (strType)
  {
  case "Bold":
   oWordApplic.Selection.Font.Bold = 1;
   break;
  case "Italic":
   oWordApplic.Selection.Font.Italic = 1;
   break;
  case "Underlined":
   oWordApplic.Selection.Font.Subscript = 0;
   break;
  }
 
 }
 
 
 public void SetFont( )
 {
  oWordApplic.Selection.Font.Bold = 0;
  oWordApplic.Selection.Font.Italic = 0;
  oWordApplic.Selection.Font.Subscript = 0;
 
 }

 public void SetFontName( string strType )
 {
  oWordApplic.Selection.Font.Name = strType;
 
 }

 public void SetFontSize( int nSize )
 {
  oWordApplic.Selection.Font.Size = nSize;
 
 }

 public void InsertPagebreak()
 {
 
  object pBreak= (int)Word.WdBreakType.wdPageBreak;
  oWordApplic.Selection.InsertBreak(ref pBreak );
 }

 

 public void GotoBookMark( string strBookMarkName)
 {
 
  object missing = System.Reflection.Missing.value;

  object Bookmark = (int)Word.WdGoToItem.wdGoToBookmark;
  object NameBookMark = strBookMarkName;
  oWordApplic.Selection.GoTo(ref Bookmark, ref missing, ref missing,ref NameBookMark);
 }

 public void GoToTheEnd( )
 {
 
  object missing = System.Reflection.Missing.value;
  object unit ;
  unit = Word.WdUnits.wdStory ;
  oWordApplic.Selection.EndKey ( ref unit, ref missing);
 
 }
 public void GoToTheBeginning( )
 {
 
  object missing = System.Reflection.Missing.value;
  object unit ;
  unit = Word.WdUnits.wdStory ;
  oWordApplic.Selection.HomeKey ( ref unit, ref missing);
 
 }

 public void GoToTheTable(int ntable )
 {

  object missing = System.Reflection.Missing.value;
  object what;
  what = Word.WdUnits.wdTable ;
  object which;
  which = 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( )
 {
  
  object missing = System.Reflection.Missing.value;
  object direction;
  direction = Word.WdUnits.wdCell;
  oWordApplic.Selection.MoveRight(ref direction,ref missing,ref missing);
 }

 public void GoToLeftCell( )
 {
  
  object missing = System.Reflection.Missing.value;
  object direction;
  direction = Word.WdUnits.wdCell;
  oWordApplic.Selection.MoveLeft(ref direction,ref missing,ref missing);
 }

 public void GoToDownCell( )
 {
  
  object missing = System.Reflection.Missing.value;
  object direction;
  direction = Word.WdUnits.wdLine;
  oWordApplic.Selection.MoveDown(ref direction,ref missing,ref missing);
 }

 public void GoToUpCell( )
 {
  
  object missing = System.Reflection.Missing.value;
  object direction;
  direction = Word.WdUnits.wdLine;
  oWordApplic.Selection.MoveUp(ref direction,ref missing,ref missing);
 }
 public void InsertPageNumber( string strType, bool bHeader )
 {
  object missing = System.Reflection.Missing.value;
  object alignment ;
  object bFirstPage = false;
  object bF = true;
  switch (strType)
  {
  case "Center":
   alignment = Word.WdPageNumberAlignment.wdAlignPageNumberCenter;
   oWordApplic.Selection.HeaderFooter.PageNumbers.Item(1).Alignment = Word.WdPageNumberAlignment.wdAlignPageNumberCenter;
   break;
  case "Right":
   alignment = Word.WdPageNumberAlignment.wdAlignPageNumberRight;
   oWordApplic.Selection.HeaderFooter.PageNumbers.Item(1).Alignment = Word.WdPageNumberAlignment.wdAlignPageNumberRight;
   break;
  case "Left":
   alignment = Word.WdPageNumberAlignment.wdAlignPageNumberLeft;
   oWordApplic.Selection.HeaderFooter.PageNumbers.Add(ref alignment,ref bFirstPage);
   break;
  }
      
 }


}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值