C# 操作word文檔
1.c#操作word 在指定書簽插入文字或者圖片
1
using Word = Microsoft.Office.Interop.Word;2

3
object Nothing = System.Reflection.Missing.Value;4
object format = Word.WdSaveFormat.wdFormatDocument;5
Word.Application wordApp = new Word.ApplicationClass();6
//打開網頁選擇內容7
object srcFileName = @"c:\new1.doc"; //里面有圖片8
Word.Document wordDoc2 = wordApp.Documents.Open(ref srcFileName, ref format, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);9
try10
{11
object bookmarkName = "jlr";12
//Word.Range rng = wordDoc2.Bookmarks.get_Item(ref bookmarkName).Range;13
//rng.Text = "newText";14
//object range = rng;15
//wordDoc2.Bookmarks.Add("jlr", ref range);16
wordDoc2.Bookmarks.get_Item(ref bookmarkName).Select();17
wordApp.Selection.InlineShapes.AddPicture("c:\\1.jpg", ref Nothing, ref Nothing, ref Nothing);18
wordDoc2.Save();19

20
}21
catch { }22
finally23
{24
//關閉網頁wordDoc225
wordDoc2.Close(ref Nothing, ref Nothing, ref Nothing);26
if (wordDoc2 != null)27
{28
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordDoc2);29
wordDoc2 = null;30
}31
//關閉wordApp32
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);33
if (wordApp != null)34
{35
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp);36
wordApp = null;37
}38
}39
GC.Collect();40

41
2.C#替換Word模版中的標簽內容的例子
1
// open 2
object omissing = system.reflection.missing.value; 3
word.applicationclass wordapp= new microsoft.office.interop.word.applicationclass(); 4
object readonly = false; 5
object template = templatepath; 6
word._document doc = wordapp.documents.open(ref template, ref omissing,ref readonly, 7
ref omissing, ref omissing, ref omissing, ref omissing, ref omissing, ref omissing, 8
ref omissing, ref omissing, ref omissing,ref omissing,ref omissing,ref omissing,ref omissing); 9
// modify 10
for (int i = 1; i <= doc.bookmarks.count; i++) 11
{ 12
object j = i; 13
word.range wordrng = doc.bookmarks.get_item(ref j).range; 14
wordrng.text = "這是第" + i + "個標簽,名稱為" + doc.bookmarks.get_item(ref j).name; 15
} 16

17
// save 18
object savefilename = mappath(request.applicationpath + "/document") + "/" + guid.newguid().tostring() + ".doc"; 19
doc.saveas(ref savefilename,ref omissing,ref omissing,ref omissing,ref omissing,ref omissing,ref omissing,ref omissing,ref omissing, 20
ref omissing,ref omissing,ref omissing,ref omissing,ref omissing,ref omissing,ref omissing); 21
doc.close( ref omissing, ref omissing, ref omissing ); 22
wordapp.quit( ref omissing, ref omissing, ref omissing );23

24
3.用C#實現在Word文檔中搜索文本
1
object filename=""; //要打開的文檔路徑2
string strKey=""; //要搜索的文本3
object MissingValue=Type.Missing;4

5
Word.Application wp=new Word.ApplicationClass();6
Word.Document wd=wp.Documents.Open(ref filename,ref MissingValue,7
ref MissingValue,ref MissingValue,8
ref MissingValue,ref MissingValue,9
ref MissingValue,ref MissingValue,10
ref MissingValue,ref MissingValue,11
ref MissingValue,ref MissingValue,12
ref MissingValue,ref MissingValue,13
ref MissingValue,ref MissingValue);14
int i=0,iCount=0;15
Word.Find wfnd;16

17
if (wd.Paragraphs!=null && wd.Paragraphs.Count>0)18
{19
iCount=wd.Paragraphs.Count;20
for(i=1;i<=iCount;i++)21
{22
wfnd=wd.Paragraphs[i].Range.Find;23
wfnd.ClearFormatting();24
wfnd.Text=strKey;25
if (wfnd.Execute(ref MissingValue,ref MissingValue,26
ref MissingValue,ref MissingValue,27
ref MissingValue,ref MissingValue,28
ref MissingValue,ref MissingValue,29
ref MissingValue,ref MissingValue,30
ref MissingValue,ref MissingValue,31
ref MissingValue,ref MissingValue,32
ref MissingValue))33
{34
MessageBox.Show("文檔中包含指定的關鍵字!","搜索結果",MessageBoxButtons.OK);35
break;36
}37
}38
}39

40

41
4.C#動態生成Word文檔並填充數據
1
using System;2
using System.Collections.Generic;3
using System.Text;4
using System.IO;5
using Word;6

7
namespace CreateWordFile8
{9
class Program10
{11
static void Main(string[] args)12
{13
CreateWordFile("");14
}15

16
//下面的例子中包括C#對Word文檔的創建、插入表格、設置樣式等操作:17

18
//(例子中代碼有些涉及數據信息部分被省略,重要是介紹一些C#操作word文檔的方法)19

20
public static string CreateWordFile(string CheckedInfo)21
{22
string message = "";23
try24
{25
Object Nothing = System.Reflection.Missing.Value;26
Directory.CreateDirectory("C:/CNSI"); //創建文件所在目錄27
string name = "CNSI_" + "53asdf" + ".doc";28
object filename = "C://CNSI//" + name; //文件保存路徑29
//創建Word文檔30
Word.Application WordApp = new Word.ApplicationClass();31
Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);32

33
//添加頁眉34
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;35
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;36
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[頁眉內容]");37
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;//設置右對齊38
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出頁眉設置39

40
WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//設置文檔的行間距41

42
//移動焦點並換行43
object count = 14;44
object WdLine = Word.WdUnits.wdLine;//換一行;45
WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移動焦點46
WordApp.Selection.TypeParagraph();//插入段落47

48
//文檔中創建表格49
Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);50
//設置表格樣式51
newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleThickThinLargeGap;52
newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;53
newTable.Columns[1].Width = 100f;54
newTable.Columns[2].Width = 220f;55
newTable.Columns[3].Width = 105f;56

57
//填充表格內容58
newTable.Cell(1, 1).Range.Text = "產品詳細信息表";59
newTable.Cell(1, 1).Range.Bold = 2;//設置單元格中字體為粗體60
//合並單元格61
newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));62
WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中63
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中64

65
//填充表格內容66
newTable.Cell(2, 1).Range.Text = "產品基本信息";67
newTable.Cell(2, 1).Range.Font.Color = Word.WdColor.wdColorDarkBlue;//設置單元格內字體顏色68
//合並單元格69
newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));70
WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;71

72
//填充表格內容73
newTable.Cell(3, 1).Range.Text = "品牌名稱:";74
newTable.Cell(3, 2).Range.Text = "BrandName";75
//縱向合並單元格76
newTable.Cell(3, 3).Select();//選中一行77
object moveUnit = Word.WdUnits.wdLine;78
object moveCount = 5;79
object moveExtend = Word.WdMovementType.wdExtend;80
WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);81
WordApp.Selection.Cells.Merge();82
//插入圖片83
string FileName = "c:\\Winter.jpg";//圖片所在路徑84
object LinkToFile = false;85
object SaveWithDocument = true;86
object Anchor = WordDoc.Application.Selection.Range;87
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);88
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//圖片寬度89
WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//圖片高度90
//將圖片設置為四周環繞型91
Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();92
s.WrapFormat.Type = Word.WdWrapType.wdWrapSquare;93

94
newTable.Cell(12, 1).Range.Text = "產品特殊屬性";95
newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));96
//在表格中增加行97
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);98

99
WordDoc.Paragraphs.Last.Range.Text = "文檔創建時間:" + DateTime.Now.ToString();//“落款”100
WordDoc.Paragraphs.Last.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;101

102
//文件保存103
WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);104
WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);105
WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);106
message = name + "文檔生成成功,以保存到C:CNSI下";107
}108
catch109
{110
message = "文件導出異常!";111
112
}113
Console.WriteLine(message);114
return message;115
}116

117
5.C# 將Word,Excel轉換成Html
1
//Word -〉Html2

3
Microsoft.Office.Interop.Word.ApplicationClass appclass = new Microsoft.Office.Interop.Word.ApplicationClass();//實例化一個Word4
Type wordtype = appclass.GetType();5
Microsoft.Office.Interop.Word.Documents docs = appclass.Documents;//獲取Document6
Type docstype = docs.GetType();7
object filename = ;//n.FullPath為Word文件的路徑8
Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docstype.InvokeMember("Open",System.Reflection.BindingFlags.InvokeMethod,null,docs,new object[]{filename,true,true});//打開文件9
Type doctype = doc.GetType();10
object savefilename = Application.StartupPath+@"\ccyt_chm\inform\"+n.FullPath.Split('.').GetValue(0)+".html";11
doctype.InvokeMember("SaveAs",System.Reflection.BindingFlags.InvokeMethod,null,doc,new object[]{savefilename,Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML});//另存為Html格式12
wordtype.InvokeMember("Quit",System.Reflection.BindingFlags.InvokeMethod,null,appclass,null);//退出13
Thread.Sleep(3000);//為了使退出完全,這里阻塞3秒14
StreamReader objreader = new StreamReader(savefilename.ToString(),System.Text.Encoding.GetEncoding("GB2312")); //以下內容是為了在Html中加入對本身Word文件的下載 15
FileStream fs = new FileStream(savefilename.ToString().Split('.').GetValue(0).ToString()+"$.html",FileMode.Create);16
streamHtmlHelp = new System.IO.StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));17
streamHtmlHelp.WriteLine("<a href=\""+n.Text+"\">源文件下載</a><br>");18
do 19
{20
str = objreader.ReadLine();21
streamHtmlHelp.WriteLine(str);22
}23
while (str != "</html>");24
streamHtmlHelp.Close();25
objreader.Close();26
File.Delete(savefilename.ToString());27
File.Move(savefilename.ToString().Split('.').GetValue(0).ToString()+"$.html",savefilename.ToString());Application.StartupPath+@"\ccyt_chm\inform\"+n.FullPath28

29
//Excel -〉Html(這個與Word不同,因為Excel為很多層,又並列很多層,必須都清空才能銷毀實例,但實際中我發現並不是每次都能銷毀,所以網上求解多次沒有結果,只能殺沒進程,為了保證只殺滅最近的進程,我用時間進行判斷)30

31
Microsoft.Office.Interop.Excel.Application repExcel = new Microsoft.Office.Interop.Excel.Application ();//實例化Excel32
Microsoft.Office.Interop.Excel.Workbook workbook = null; 33
Microsoft.Office.Interop.Excel.Worksheet worksheet = null;34
workbook = repExcel.Application.Workbooks.Open();//打開文件,n.FullPath是文件路徑35
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];36
object htmlFile = Application.StartupPath+@"\ccyt_chm\inform\"+n.FullPath.Split('.').GetValue(0)+".html"; 37
object ofmt = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml; 38
workbook.SaveAs(htmlFile,ofmt,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);//進行另存為操作 39
object osave = false; 40
workbook.Close(osave,Type.Missing,Type.Missing);//逐步關閉所有使用的對象41
repExcel.Quit();42
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);43
worksheet = null;44
GC.Collect();//垃圾回收45
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);46
workbook=null;47
GC.Collect();48
System.Runtime.InteropServices.Marshal.ReleaseComObject(repExcel.Application.Workbooks);49
GC.Collect();50
System.Runtime.InteropServices.Marshal.ReleaseComObject(repExcel);51
repExcel = null;52
GC.Collect();53
System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("EXCEL");//依據時間殺滅進程54
foreach ( System.Diagnostics.Process p in process)55
{56
if (DateTime.Now.Second - p.StartTime.Second > 0 && DateTime.Now.Second - p.StartTime.Second < 5)57
{58
p.Kill();59
}60
}61
Thread.Sleep(3000);//保證完全關閉62
StreamReader objreader = new StreamReader(htmlFile.ToString().Split('.').GetValue(0)+".files\\sheet001.html",System.Text.Encoding.GetEncoding("GB2312"));//以下內容是在Html的第一個框架中添加下載原Excel的超鏈接 63
FileStream fs = new FileStream(htmlFile.ToString().Split('.').GetValue(0)+".files\\sheet001$.html",FileMode.Create);64
streamHtmlHelp = new System.IO.StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));65
streamHtmlHelp.WriteLine("<a href=\""+"../"+n.Text+"\">源文件下載</a><br>");66
do 67
{68
str = objreader.ReadLine();69
streamHtmlHelp.WriteLine(str);70
}71
while (str != "</html>");72
streamHtmlHelp.Close();73
objreader.Close();74
File.Delete(htmlFile.ToString().Split('.').GetValue(0)+".files\\sheet001.html");75
File.Move(htmlFile.ToString().Split('.').GetValue(0)+".files\\sheet001$.html",htmlFile.ToString().Split('.').GetValue(0)+".files\\sheet001.html");Application.StartupPath+@"\ccyt_chm\inform\"+n.FullPath,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing76
6.c# 實現Word聯接Excel的MailMerge功能
1
//目標:使用word的MailMerge功能,數據源是Excel中的數據。這些資料在網上很少,只能自己慢慢測試了。2

3
//關於Word的MailMerge功能:4

5
//word提供郵件的模板,可以選擇各種數據源,比如數據庫,excel等,然后群發(或打印、另存文件)郵件。6

7
8

9
//為了實現這個功能,我的程序要能做的是10

11
//1:打開word文件對象12

13
//2:設置MailMerge數據源:指定Excel,指定查詢語句,指定聯接的列s14

15
//3:關閉保存16

17
18

19
//關於引用:20

21
using Word = Microsoft.Office.Interop.Word;22

23
using System.Reflection;24

25
using System.Diagnostics;26

27
using System.IO;28

29
//關於變量:word的com對象需要傳入的參數定義30

31
Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();32

33
object missing = System.Reflection.Missing.Value; 34

35
object falseValue = false;36

37
object trueValue = true;38

39
//關於處理40

41
//需要注重的是42

43
//1:打開word的方式44

45
//2:query的寫法。類似於sql一般,比較好玩。46

47
//3:設置列,。設置之后,在word中可以看見這些列。48

49
//4:關閉word之后,還得再copy一次excel。直接生成之后的excel文件size暴漲,文件還打不開,所以覆蓋一遍了之。原因不詳。50

51
private void button1_Click(object sender, EventArgs e)52

53
{54

55
object fileName = CopyTemplateDoc();//copy doc in56

57
Word.Document doc = WordApp.Documents.Open(ref fileName, ref missing, ref falseValue, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref trueValue, ref missing, ref missing, ref missing);58

59
object linkTo = CopyExcelData();//copy excel data60

61
object query = "SELECT * FROM `Sheet1$`";//data from sheet162

63
object header = "Name,Category,Address,Content";//filed list64

65
try66

67
{68

69
doc.MailMerge.CreateDataSource(ref linkTo, ref missing, ref missing, ref header, ref falseValue, ref query, ref missing, ref missing, ref trueValue);70

71
doc.MailMerge.Fields.Add(WordApp.Selection.Range, "Name");//add one filed to test72

73
MessageBox.Show("success");74

75
}76

77
catch (Exception ex)78

79
{80

81
MessageBox.Show(ex.Message);82

83
}84

85
finally86

87
{88

89
doc.Save();//save word90

91
CloseApp();//close word app92

93
CopyExcelData();//copy data again,*******************94

95
}96

97
}98

99
//關於關閉word對象100

101
public void CloseApp()102
{103
WordApp.Documents.Close(ref trueValue, ref missing, ref missing);104
WordApp.Quit(ref trueValue, ref missing, ref missing);105
System.Runtime.InteropServices.Marshal.ReleaseComObject(WordApp);106
GC.Collect();107

108
//this.KillExcelProcess();109
}110

111
//還有兩個工具函數不再贅述,用來copy文件並且返回文件名private string CopyExcelData();和private string CopyTemplateDoc()。112
7.c#操作word表格
1
//對word中表格的操作,以下是部分代碼,關於操作不規則表格的.2
using System;3
using System.Collections;4
using System.ComponentModel;5
using System.Data;6
using System.Drawing;7
using System.Web;8
using System.Web.SessionState;9
using System.Web.UI;10
using System.Web.UI.WebControls;11
using System.Web.UI.HtmlControls;12
using System.Configuration;13
using System.IO; 14

15
using System.Reflection;16
using System.Runtime.InteropServices ;17
using System.Threading;18

19
public void MakeMyTable(DataTable DT,string strFilePath)20
{21
22
string strEnd = this.txtEnd.Text.Trim().ToString();23
string strStart = this.txtStart.Text.Trim().ToString();24
//生成文檔分頁中的起始和終止頁25
string strSign = "("+strStart + "-" + strEnd + ")";26

27
//殺掉所有word進程以保證速度28
//KillWordProcess();29

30
object Nothing = System.Reflection.Missing.Value; 31
object missing = System.Reflection.Missing.Value; 32
object filename= strFilePath;33

34
Word.Application wordApp=new Word.ApplicationClass(); 35
Word.Document wordDoc=wordApp.Documents.Add(ref Nothing,ref Nothing,ref Nothing,ref Nothing);36

37
try38
{39
//生成過程中屏蔽返回按扭,不允許中途停止40
Button2.Enabled = false;41
生成文檔527

528
529

530
}531
catch532
{533
wordDoc.Close(ref Nothing, ref Nothing, ref Nothing); 534
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing); 535
if ( wordDoc != null )536
{537
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordDoc);538
wordDoc = null;539
}540
if ( wordApp != null )541
{542
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp);543
wordApp = null;544
}545
GC.Collect();546
utility.ShowPopMessage("文檔生成失敗!");547

548
}549
}550

551
8.c#讀取Word
1
//1:2
//對項目添加引用,Microsoft Word 11.0 Object //Library3
//2:4
//在程序中添加 using Word = Microsoft.Office.Interop.Word; 5
//3:6
//程序中添加7
Word.Application app = new Microsoft.Office.Interop.Word.Application(); //可以打開word程序8
Word.Document doc = null; //一會要記錄word打開的文檔9
//word文檔和word程序可不是一回事奧!10
4:11
//一般來說,對於抽取word內容,用的方法很少12
public override void openFile(object fileName){} //打開文檔13
public override object readPar(int i){} //讀取word文檔的第i段14
public override int getParCount(){} //返回word文檔一共幾段15
public override void closeFile(){} //關閉文檔16
public override void quit(){} //關閉word程序17

18
//從網頁上拷貝的目錄有時候會出現手動換行符^l,,先將其換成回車段落標記,才能正確讀取19
public void replaceChar(){}20

21
5:代碼22

23
public override void openFile(object fileName)24
{25
try26
{27
if (app.Documents.Count > 0)28
{29
if (MessageBox.Show("已經打開了一個word文檔,你想關閉重新打開該文檔嗎?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)30
{31
object unknow = Type.Missing;32
doc = app.ActiveDocument;33
if (MessageBox.Show("你想保存嗎?", "保存", MessageBoxButtons.YesNo) == DialogResult.Yes)34
{35
app.ActiveDocument.Save();36
}37

38
app.ActiveDocument.Close(ref unknow, ref unknow, ref unknow);39
app.Visible = false;40
}41
else42
{43
return;44
}45
}46
}47
catch (Exception)48
{49
//MessageBox.Show("您可能關閉了文檔");50
app = new Microsoft.Office.Interop.Word.Application();51
}52

53
try54
{55
object unknow = Type.Missing;56
app.Visible = true;57
doc = app.Documents.Open(ref fileName,58
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,59
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,60
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);61
}62
catch (Exception ex)63
{64
MessageBox.Show("出現錯誤:" + ex.ToString());65
} 66
67
}68
public override object readPar(int i)69
{70
try71
{72
string temp = doc.Paragraphs[i].Range.Text.Trim();73
return temp;74
}75
catch (Exception e) {76
MessageBox.Show("Error:"+e.ToString());77
return null;78
}79
}80

81
public override int getParCount()82
{83
return doc.Paragraphs.Count;84
}85

86
public override void closeFile()87
{88
try89
{90
object unknow = Type.Missing;91
object saveChanges = Word.WdSaveOptions.wdPromptToSaveChanges;92
app.ActiveDocument.Close(ref saveChanges, ref unknow, ref unknow);93
}94
catch (Exception ex)95
{96
MessageBox.Show("Error:" + ex.ToString());97
}98
}99

100
public override void quit()101
{102
try103
{104
object unknow = Type.Missing;105
object saveChanges = Word.WdSaveOptions.wdSaveChanges;106
app.Quit(ref saveChanges, ref unknow, ref unknow);107
}108
catch (Exception)109
{110

111
}112
}113

114
public void replaceChar() {115
try116
{117
object replaceAll = Word.WdReplace.wdReplaceAll;118
object missing = Type.Missing;119

120
app.Selection.Find.ClearFormatting();121
app.Selection.Find.Text = "^l";122

123
app.Selection.Find.Replacement.ClearFormatting();124
app.Selection.Find.Replacement.Text = "^p";125

126
app.Selection.Find.Execute(127
ref missing, ref missing, ref missing, ref missing, ref missing,128
ref missing, ref missing, ref missing, ref missing, ref missing,129
ref replaceAll, ref missing, ref missing, ref missing, ref missing);130
}131
catch (Exception e)132
{133
MessageBox.Show("文檔出現錯誤,請重新操作");134
}135
}136

137
//6:138
//剛才是用讀取一段做的例子,如果要讀取一句或一篇只需要把doc.Paragraphs[i](readPar中)改成doc.Sentences[i]或doc.content即可,因為都是微軟的東東,所以用起來沒有一點的障礙,再加上現在的vs2005做的很智能,所以先從java轉到了c#上139

140
//7:141
//實際上,c#中讀取word是不用那么麻煩的,但是如果考慮到可能還要抽取txt,ppt等多種格式,所以就寫了一個抽象類,調用起來也方便,這就是為什么我的程序方法開頭會有override的原因,總要考慮到通用,所以多了一些代碼。142

143
9.C#打開WORD文檔內容並顯示
1
private void button1_Click(object sender, System.EventArgs e)2
{3
//調用打開文件對話框獲取要打開的文件WORD文件,RTF文件,文本文件路徑名稱4
OpenFileDialog opd = new OpenFileDialog();5
opd.InitialDirectory = "c:\\";6
opd.Filter = "Word文檔(*.doc)|*.doc|文本文檔(*.txt)|*.txt|RTF文檔(*.rtf)|*.rtf|所有文檔(*.*)|*.*";7
opd.FilterIndex = 1;8
9
if (opd.ShowDialog() == DialogResult.OK && opd.FileName.Length > 0)10
{ 11
12
//建立Word類的實例,缺點:不能正確讀取表格,圖片等等的顯示13
Word.ApplicationClass app = new Word.ApplicationClass();14
Word.Document doc = null;15
object missing = System.Reflection.Missing.Value;16

17
object FileName = opd.FileName;18
object readOnly = false;19
object isVisible = true;20
object index = 0;21
try22
{23
doc = app.Documents.Open(ref FileName, ref missing, ref readOnly,24
ref missing, ref missing, ref missing, ref missing, ref missing,25
ref missing, ref missing, ref missing, ref isVisible, ref missing,26
ref missing, ref missing, ref missing);27

28
doc.ActiveWindow.Selection.WholeStory();29
doc.ActiveWindow.Selection.Copy(); 30
//從剪切板獲取數據31
IDataObject data=Clipboard.GetDataObject();32
this.richTextBox1.Text=data.GetData(DataFormats.Text).ToString();33
34
}35
finally36
{37
if (doc != null)38
{39
doc.Close(ref missing, ref missing, ref missing);40
doc = null;41
}42

43
if (app != null)44
{45
app.Quit(ref missing, ref missing, ref missing);46
app = null;47
}48
}49

50
}51

52
}
