我在别的论坛经常看到有的朋友们问怎么样将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; } }
} }
|