在Winform程序中对Word进行操作需要引入相关的COM组件。如果安装的office2007则引入12.0版本的COM组件,如下图所示:
在对应的CS文件中使用其名字空间,
using System.Reflection;
using MSWord=Microsoft.Office.Interop.Word;
字号「八号」对应磅值5
字号「七号」对应磅值5.5
字号「小六」对应磅值6.5
字号「六号」对应磅值7.5
字号「小五」对应磅值9
字号「五号」对应磅值10.5
字号「小四」对应磅值12
字号「四号」对应磅值14
字号「小三」对应磅值15
字号「三号」对应磅值16
字号「小二」对应磅值18
字号「二号」对应磅值22
字号「小一」对应磅值24
字号「一号」对应磅值26
字号「小初」对应磅值36
字号「初号」对应磅值42
【方式一】
string strDir = Directory.GetCurrentDirectory();
string docName = strDir + @"\test.doc";
object Nothing = System.Reflection.Missing.Value; //一个编程时需要经常使用的一个参数
MSWord.ApplicationClass wordapp = null; //这是MSWord程序,在这个程序下,可以同时打开多个文档
MSWord.Document doc = null; //需要打开的MSWord文档
object docObject = docName; //由于COM操作中,都是使用的 object ,所以,需要做一些转变
if (!File.Exists(docName))
{
File.Create(docName);
}
wordapp = new MSWord.ApplicationClass();
wordapp.Visible = true; //所打开的MSWord程序,是否是可见的
doc = wordapp.Documents.Add(ref docObject, ref Nothing, ref Nothing, ref Nothing);
doc.Activate(); //将当前文件设定为活动文档
【方式二】
string strDir = Directory.GetCurrentDirectory();
string docName = strDir + @"\test.doc";
object Nothing = System.Reflection.Missing.Value;
MSWord.ApplicationClass wordapp = null;
MSWord.Document doc = null;
object docObject = docName;
if (!File.Exists(docName))
{
File.Create(docName);
}
wordapp = new MSWord.ApplicationClass();
wordapp.Visible = true; //所打开的MSWord程序,是否是可见的
Object isVisible = true;
doc = wordapp.Documents.Open(ref docObject, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref isVisible, ref Nothing,
ref Nothing, ref Nothing, ref Nothing);
【提示】:在上面【方式二】打开word文档的基础上进行操作
if (wordapp != null)
{
if (doc != null)
{
MSWord._Document docc = doc as MSWord._Document;
docc.Close(ref Nothing, ref Nothing, ref Nothing);
}
wordapp.Quit(ref Nothing, ref Nothing, ref Nothing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp);
}
【提示】:在上面【方式二】打开word文档的基础上进行操作
int paraCount = doc.Paragraphs.Count;//获取文档总的段落数
MSWord.Paragraph par = doc.Paragraphs[1];//获取第一段落
string context = par.Range.Text;//获取第一段落内容
/////////获取多个段落的内容///////////
MSWord.Range range = doc.Range();
MSWord.Paragraph para1;//起始段落
para1 = doc.Content.Paragraphs[2];
range.Start = para1.Range.Start;
MSWord.Paragraph para2;//结束段落
para2 = doc.Content.Paragraphs[6];
range.End = para2.Range.End;
context = range.Text;
注意:文章的第一段落的下表索引值从1开始而不是从0开始。
//拷贝从第begin段到第end段的内容
doc.Range(doc.Paragraphs[begin].Range.Start, doc.Paragraphs[end].Range.End).Copy();
//选中所有段落
doc_t.Range(doc_t.Paragraphs[1].Range.Start, doc_t.Paragraphs[doc_t.Paragraphs.Count].Range.End).Select();
//删除文档选中部分内容
wordApp.Selection.Delete();
//读取单元格内容
string str1 = ((MSExcel.Range)sheet.Cells[2, 3]).Text.ToString();//去读cells(2,3)单元格内容
注:doc及doc_t均为MSWord._Document类型对象,wordApp 为MSWord.ApplicationClass类型对象。
【提示】:在上面【方式二】打开word文档的基础上进行操作
MSWord.Paragraph par = doc.Paragraphs[3];
par.Range.Copy();//复制到粘贴板
【提示】:在上面【方式二】打开word文档的基础上进行操作
MSWord.Paragraph para = doc.Content.Paragraphs.Add(ref Nothing);
para.Range.Paste();
para.Range.InsertParagraphBefore();//添加一次回车
doc.Save();//保存文档