|  李天平整理  |  
天道酬勤
关于如何将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编辑器看一下代码吧!

3 、废话不说了,看我的程序吧!

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
  } 
       
 } 





Copyright © 2003-2004 LTP.Net 知识库