本文中用C#来操作Word,包括:

创建Word;

插入文字,选择文字,编辑文字的字号、粗细、颜色、下划线等;

设置段落的首行缩进、行距;

设置页面页边距和纸张大小;

设置页眉、页码;

插入图片,设置图片宽高以及给图片添加标题;

插入表格,格式化表格,往表格中插入数据;

保存Word,打印Word;

重新打开Word等。

Visual studio版本:Visual Studio 2012(2010应该也可以)

准备工作:

/*
1. 添加引用COM里面的 Microsoft Word 12.0 Object. Library 引用(12.0表示Word 2007版本)

2. 导命名空间

using MSWord =Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;

3. 把引用中的Microsoft.Office.Interop.Word的“属性”中的嵌入互操作设为False
*/

以下是全部代码:(代码有点长,但请不要有压力,直接复制进去就能直接成功运行)

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection; namespace Console_WordSkill_All
{
class Program
{
static void Main(string[] args)
{
object path; //文件路径变量
string strContent; //文本内容变量
MSWord.Application wordApp; //Word应用程序变量
MSWord.Document wordDoc; //Word文档变量 path = Environment.CurrentDirectory + "\\MyWord_Print.doc";
wordApp = new MSWord.ApplicationClass(); //初始化 wordApp.Visible = true;//使文档可见 //如果已存在,则删除
if (File.Exists((string)path))
{
File.Delete((string)path);
} //由于使用的是COM库,因此有许多变量需要用Missing.Value代替
Object Nothing = Missing.Value;
wordDoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing); #region 页面设置、页眉图片和文字设置,最后跳出页眉设置 //页面设置
wordDoc.PageSetup.PaperSize = MSWord.WdPaperSize.wdPaperA4;//设置纸张样式为A4纸
wordDoc.PageSetup.Orientation = MSWord.WdOrientation.wdOrientPortrait;//排列方式为垂直方向
wordDoc.PageSetup.TopMargin = 57.0f;
wordDoc.PageSetup.BottomMargin = 57.0f;
wordDoc.PageSetup.LeftMargin = 57.0f;
wordDoc.PageSetup.RightMargin = 57.0f;
wordDoc.PageSetup.HeaderDistance = 30.0f;//页眉位置 //设置页眉
wordApp.ActiveWindow.View.Type = MSWord.WdViewType.wdNormalView;//普通视图(即页面视图)样式
wordApp.ActiveWindow.View.SeekView = MSWord.WdSeekView.wdSeekPrimaryHeader;//进入页眉设置,其中页眉边距在页面设置中已完成
wordApp.Selection.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphRight;//页眉中的文字右对齐 //插入页眉图片(测试结果图片未插入成功)
wordApp.Selection.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;
string headerfile = @"C:\Users\xiahui\Desktop\OficeProgram\3.jpg";
MSWord.InlineShape shape1 = wordApp.ActiveWindow.ActivePane.Selection.InlineShapes.AddPicture(headerfile, ref Nothing, ref Nothing, ref Nothing);
shape1.Height = ;//强行设置貌似无效,图片没有按设置的缩放——图片的比例并没有改变。
shape1.Width = ;
wordApp.ActiveWindow.ActivePane.Selection.InsertAfter(" 文档页眉");//在页眉的图片后面追加几个字 //去掉页眉的横线
wordApp.ActiveWindow.ActivePane.Selection.ParagraphFormat.Borders[MSWord.WdBorderType.wdBorderBottom].LineStyle = MSWord.WdLineStyle.wdLineStyleNone;
wordApp.ActiveWindow.ActivePane.Selection.Borders[MSWord.WdBorderType.wdBorderBottom].Visible = false;
wordApp.ActiveWindow.ActivePane.View.SeekView = MSWord.WdSeekView.wdSeekMainDocument;//退出页眉设置
#endregion #region 页码设置并添加页码 //为当前页添加页码
MSWord.PageNumbers pns = wordApp.Selection.Sections[].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers;//获取当前页的号码
pns.NumberStyle = MSWord.WdPageNumberStyle.wdPageNumberStyleNumberInDash;//设置页码的风格,是Dash形还是圆形的
pns.HeadingLevelForChapter = ;
pns.IncludeChapterNumber = false;
pns.RestartNumberingAtSection = false;
pns.StartingNumber = ; //开始页页码?
object pagenmbetal = MSWord.WdPageNumberAlignment.wdAlignPageNumberCenter;//将号码设置在中间
object first = true;
wordApp.Selection.Sections[].Footers[MSWord.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers.Add(ref pagenmbetal, ref first); #endregion #region 行间距与缩进、文本字体、字号、加粗、斜体、颜色、下划线、下划线颜色设置 wordApp.Selection.ParagraphFormat.LineSpacing = 16f;//设置文档的行间距
wordApp.Selection.ParagraphFormat.FirstLineIndent = ;//首行缩进的长度
//写入普通文本
strContent = "我是普通文本\n";
wordDoc.Paragraphs.Last.Range.Text = strContent; wordDoc.Paragraphs.Last.Range.Text = "我再加一行试试,这里不加'\\n'";
//直接添加段,不是覆盖( += )
wordDoc.Paragraphs.Last.Range.Text += "不会覆盖的,"; //添加在此段的文字后面,不是新段落
wordDoc.Paragraphs.Last.Range.InsertAfter("这是后面的内容\n"); //将文档的前4个字替换成"哥是替换文字",并将其颜色设为红色
object start = ;
object end = ;
MSWord.Range rang = wordDoc.Range(ref start, ref end);
rang.Font.Color = MSWord.WdColor.wdColorRed;
rang.Text = "哥是替换文字";
wordDoc.Range(ref start, ref end); //写入黑体文本
object unite = MSWord.WdUnits.wdStory;
wordApp.Selection.EndKey(ref unite, ref Nothing);//将光标移到文本末尾
wordApp.Selection.ParagraphFormat.FirstLineIndent = ;//取消首行缩进的长度
strContent = "这是黑体文本\n";
wordDoc.Paragraphs.Last.Range.Font.Name = "黑体";
wordDoc.Paragraphs.Last.Range.Text = strContent; //写入加粗文本
strContent = "这是粗体文本\n"; //
wordApp.Selection.EndKey(ref unite, ref Nothing);//这一句不加,有时候好像也不出问题,不过还是加了安全
wordDoc.Paragraphs.Last.Range.Font.Bold = ;
wordDoc.Paragraphs.Last.Range.Text = strContent; //写入15号字体文本
strContent = "我这个文本的字号是15号,而且是宋体\n";
wordApp.Selection.EndKey(ref unite, ref Nothing);
wordDoc.Paragraphs.Last.Range.Font.Size = ;
wordDoc.Paragraphs.Last.Range.Font.Name = "宋体";
wordDoc.Paragraphs.Last.Range.Text = strContent; //写入斜体文本
strContent = "我是斜体字文本\n";
wordApp.Selection.EndKey(ref unite, ref Nothing);
wordDoc.Paragraphs.Last.Range.Font.Italic = ;
wordDoc.Paragraphs.Last.Range.Text = strContent; //写入蓝色文本
strContent = "我是蓝色的文本\n";
wordApp.Selection.EndKey(ref unite, ref Nothing);
wordDoc.Paragraphs.Last.Range.Font.Color = MSWord.WdColor.wdColorBlue;
wordDoc.Paragraphs.Last.Range.Text = strContent; //写入下划线文本
strContent = "我是下划线文本\n";
wordApp.Selection.EndKey(ref unite, ref Nothing);
wordDoc.Paragraphs.Last.Range.Font.Underline = MSWord.WdUnderline.wdUnderlineThick;
wordDoc.Paragraphs.Last.Range.Text = strContent; //写入红色下画线文本
strContent = "我是点线下划线,并且下划线是红色的\n";
wordApp.Selection.EndKey(ref unite, ref Nothing);
wordDoc.Paragraphs.Last.Range.Font.Underline = MSWord.WdUnderline.wdUnderlineDottedHeavy;
wordDoc.Paragraphs.Last.Range.Font.UnderlineColor = MSWord.WdColor.wdColorRed;
wordDoc.Paragraphs.Last.Range.Text = strContent; //取消下划线,并且将字号调整为12号
strContent = "我他妈不要下划线了,并且设置字号为12号,黑色不要斜体\n";
wordApp.Selection.EndKey(ref unite, ref Nothing);
wordDoc.Paragraphs.Last.Range.Font.Size = ;
wordDoc.Paragraphs.Last.Range.Font.Underline = MSWord.WdUnderline.wdUnderlineNone;
wordDoc.Paragraphs.Last.Range.Font.Color = MSWord.WdColor.wdColorBlack;
wordDoc.Paragraphs.Last.Range.Font.Italic = ;
wordDoc.Paragraphs.Last.Range.Text = strContent; #endregion #region 插入图片、居中显示,设置图片的绝对尺寸和缩放尺寸,并给图片添加标题 wordApp.Selection.EndKey(ref unite, ref Nothing); //将光标移动到文档末尾
//图片文件的路径
string filename = Environment.CurrentDirectory + "\\6.jpg";
//要向Word文档中插入图片的位置
Object range = wordDoc.Paragraphs.Last.Range;
//定义该插入的图片是否为外部链接
Object linkToFile = false; //默认,这里貌似设置为bool类型更清晰一些
//定义要插入的图片是否随Word文档一起保存
Object saveWithDocument = true; //默认
//使用InlineShapes.AddPicture方法(【即“嵌入型”】)插入图片
wordDoc.InlineShapes.AddPicture(filename, ref linkToFile, ref saveWithDocument, ref range);
wordApp.Selection.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;//居中显示图片 //设置图片宽高的绝对大小 //wordDoc.InlineShapes[1].Width = 200;
//wordDoc.InlineShapes[1].Height = 150;
//按比例缩放大小 wordDoc.InlineShapes[].ScaleWidth = ;//缩小到20% ?
wordDoc.InlineShapes[].ScaleHeight = ; //在图下方居中添加图片标题 wordDoc.Content.InsertAfter("\n");//这一句与下一句的顺序不能颠倒,原因还没搞透
wordApp.Selection.EndKey(ref unite, ref Nothing);
wordApp.Selection.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;
wordApp.Selection.Font.Size = ;//字体大小
wordApp.Selection.TypeText("图1 测试图片\n"); #endregion #region 添加表格、填充数据、设置表格行列宽高、合并单元格、添加表头斜线、给单元格添加图片
wordDoc.Content.InsertAfter("\n");//这一句与下一句的顺序不能颠倒,原因还没搞透
wordApp.Selection.EndKey(ref unite, ref Nothing); //将光标移动到文档末尾
wordApp.Selection.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft;
//object WdLine2 = MSWord.WdUnits.wdLine;//换一行;
//wordApp.Selection.MoveDown(ref WdLine2, 6, ref Nothing);//向下跨15行输入表格,这样表格就在文字下方了,不过这是非主流的方法 //设置表格的行数和列数
int tableRow = ;
int tableColumn = ; //定义一个Word中的表格对象
MSWord.Table table = wordDoc.Tables.Add(wordApp.Selection.Range,
tableRow, tableColumn, ref Nothing, ref Nothing); //默认创建的表格没有边框,这里修改其属性,使得创建的表格带有边框
table.Borders.Enable = ;//这个值可以设置得很大,例如5、13等等 //表格的索引是从1开始的。
wordDoc.Tables[].Cell(, ).Range.Text = "列\n行";
for (int i = ; i < tableRow; i++)
{
for (int j = ; j < tableColumn; j++)
{
if (i == )
{
table.Cell(i, j + ).Range.Text = "Column " + j;//填充每列的标题
}
if (j == )
{
table.Cell(i + , j).Range.Text = "Row " + i; //填充每行的标题
}
table.Cell(i + , j + ).Range.Text = i + "行 " + j + "列"; //填充表格的各个小格子
}
} //添加行
table.Rows.Add(ref Nothing);
table.Rows[tableRow + ].Height = ;//设置新增加的这行表格的高度
//向新添加的行的单元格中添加图片
string FileName = Environment.CurrentDirectory + "\\6.jpg";//图片所在路径
object LinkToFile = false;
object SaveWithDocument = true;
object Anchor = table.Cell(tableRow + , tableColumn).Range;//选中要添加图片的单元格
wordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor); //由于是本文档的第2张图,所以这里是InlineShapes[2]
wordDoc.Application.ActiveDocument.InlineShapes[].Width = ;//图片宽度
wordDoc.Application.ActiveDocument.InlineShapes[].Height = ;//图片高度 // 将图片设置为四周环绕型
MSWord.Shape s = wordDoc.Application.ActiveDocument.InlineShapes[].ConvertToShape();
s.WrapFormat.Type = MSWord.WdWrapType.wdWrapSquare; //设置table样式
table.Rows.HeightRule = MSWord.WdRowHeightRule.wdRowHeightAtLeast;//高度规则是:行高有最低值下限?
table.Rows.Height = wordApp.CentimetersToPoints(float.Parse("0.8"));// table.Range.Font.Size = 10.5F;
table.Range.Font.Bold = ; table.Range.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;//表格文本居中
table.Range.Cells.VerticalAlignment = MSWord.WdCellVerticalAlignment.wdCellAlignVerticalBottom;//文本垂直贴到底部
//设置table边框样式
table.Borders.OutsideLineStyle = MSWord.WdLineStyle.wdLineStyleDouble;//表格外框是双线
table.Borders.InsideLineStyle = MSWord.WdLineStyle.wdLineStyleSingle;//表格内框是单线 table.Rows[].Range.Font.Bold = ;//加粗
table.Rows[].Range.Font.Size = 12F;
table.Cell(, ).Range.Font.Size = 10.5F;
wordApp.Selection.Cells.Height = ;//所有单元格的高度 //除第一行外,其他行的行高都设置为20
for (int i = ; i <= tableRow; i++)
{
table.Rows[i].Height = ;
} //将表格左上角的单元格里的文字(“行” 和 “列”)居右
table.Cell(, ).Range.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphRight;
//将表格左上角的单元格里面下面的“列”字移到左边,相比上一行就是将ParagraphFormat改成了Paragraphs[2].Format
table.Cell(, ).Range.Paragraphs[].Format.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft; table.Columns[].Width = ;//将第 1列宽度设置为50 //将其他列的宽度都设置为75
for (int i = ; i <= tableColumn; i++)
{
table.Columns[i].Width = ;
} //添加表头斜线,并设置表头的样式
table.Cell(, ).Borders[MSWord.WdBorderType.wdBorderDiagonalDown].Visible = true;
table.Cell(, ).Borders[MSWord.WdBorderType.wdBorderDiagonalDown].Color = MSWord.WdColor.wdColorRed;
table.Cell(, ).Borders[MSWord.WdBorderType.wdBorderDiagonalDown].LineWidth = MSWord.WdLineWidth.wdLineWidth150pt; //合并单元格
table.Cell(, ).Merge(table.Cell(, ));//横向合并 table.Cell(, ).Merge(table.Cell(, ));//纵向合并,合并(2,3),(3,3),(4,3) #endregion wordApp.Selection.EndKey(ref unite, ref Nothing); //将光标移动到文档末尾 wordDoc.Content.InsertAfter("\n");
wordDoc.Content.InsertAfter("就写这么多,算了吧!2016.09.27"); //WdSaveFormat为Word 2003文档的保存格式
object format = MSWord.WdSaveFormat.wdFormatDocument;// office 2007就是wdFormatDocumentDefault
//将wordDoc文档对象的内容保存为DOCX文档
wordDoc.SaveAs(ref path, 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);
//关闭wordDoc文档对象 //看是不是要打印
//wordDoc.PrintOut(); wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
//关闭wordApp组件对象
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
Console.WriteLine(path + " 创建完毕!");
Console.ReadKey(); //我还要打开这个文档玩玩
MSWord.Application app = new MSWord.Application();
MSWord.Document doc = null;
try
{ object unknow = Type.Missing;
app.Visible = true;
string str = Environment.CurrentDirectory + "\\MyWord_Print.doc";
object file = str;
doc = app.Documents.Open(ref file,
ref unknow, ref unknow, ref unknow, ref unknow,
ref unknow, ref unknow, ref unknow, ref unknow,
ref unknow, ref unknow, ref unknow, ref unknow,
ref unknow, ref unknow, ref unknow);
string temp = doc.Paragraphs[].Range.Text.Trim();
Console.WriteLine("你他妈输出temp干嘛?");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
wordDoc = doc;
wordDoc.Paragraphs.Last.Range.Text += "我真的不打算再写了,就写这么多吧"; Console.ReadKey();
} }
}

生成编辑的Word内容如下图所示:

word文档工程变量的属性

//合并单元格
table.Cell(, ).Merge(table.Cell(, )); //单元格分离
object Rownum = ;
object Columnnum = ;
table.Cell(, ).Split(ref Rownum, ref Columnnum); //单元格对齐方式
WApp.Selection.Cells.VerticalAlignment =Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; //插入表行
table.Rows.Add(ref missing); //分页 object ib = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
WApp.Selection.InsertBreak(ref ib); //换行
WApp.Selection.TypeParagraph(); 二、word文档设置 WApp.ActiveDocument.PageSetup.LineNumbering.Active =;//行编号
WApp.ActiveDocument.PageSetup.Orientation =Microsoft.Office.Interop.Word.WdOrientation.wdOrientPortrait;//页面方向
WApp.ActiveDocument.PageSetup.TopMargin =WApp.CentimetersToPoints(float.Parse("2.54"));//上页边距
WApp.ActiveDocument.PageSetup.BottomMargin = WApp.CentimetersToPoints(float.Parse("2.54"));//下页边距
WApp.ActiveDocument.PageSetup.LeftMargin = WApp.CentimetersToPoints(float.Parse("3.17"));//左页边距
WApp.ActiveDocument.PageSetup.RightMargin = WApp.CentimetersToPoints(float.Parse("3.17"));//右页边距
WApp.ActiveDocument.PageSetup.Gutter = WApp.CentimetersToPoints(float.Parse(""));//装订线位置
WApp.ActiveDocument.PageSetup.HeaderDistance = WApp.CentimetersToPoints(float.Parse("1.5"));//页眉
WApp.ActiveDocument.PageSetup.FooterDistance = WApp.CentimetersToPoints(float.Parse("1.75"));//页脚
WApp.ActiveDocument.PageSetup.PageWidth = WApp.CentimetersToPoints(float.Parse(""));//纸张宽度
WApp.ActiveDocument.PageSetup.PageHeight = WApp.CentimetersToPoints(float.Parse("29.7"));//纸张高度
WApp.ActiveDocument.PageSetup.FirstPageTray = Microsoft.Office.Interop.Word.WdPaperTray.wdPrinterDefaultBin;//纸张来源
WApp.ActiveDocument.PageSetup.OtherPagesTray = Microsoft.Office.Interop.Word.WdPaperTray.wdPrinterDefaultBin;//纸张来源
WApp.ActiveDocument.PageSetup.SectionStart = Microsoft.Office.Interop.Word.WdSectionStart.wdSectionNewPage;//节的起始位置:新建页
WApp.ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = ;//页眉页脚-奇偶页不同
WApp.ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = ;//页眉页脚-首页不同
WApp.ActiveDocument.PageSetup.VerticalAlignment = Microsoft.Office.Interop.Word.WdVerticalAlignment.wdAlignVerticalTop;//页面垂直对齐方式
WApp.ActiveDocument.PageSetup.SuppressEndnotes =;//不隐藏尾注
WApp.ActiveDocument.PageSetup.MirrorMargins = ;//不设置首页的内外边距
WApp.ActiveDocument.PageSetup.TwoPagesOnOne = false;//不双面打印
WApp.ActiveDocument.PageSetup.BookFoldPrinting =false;//不设置手动双面正面打印
WApp.ActiveDocument.PageSetup.BookFoldRevPrinting =false;//不设置手动双面背面打印
WApp.ActiveDocument.PageSetup.BookFoldPrintingSheets = ;//打印默认份数
WApp.ActiveDocument.PageSetup.GutterPos = Microsoft.Office.Interop.Word.WdGutterStyle.wdGutterPosLeft;//装订线位于左侧
WApp.ActiveDocument.PageSetup.LinesPage = ;//默认页行数量
WApp.ActiveDocument.PageSetup.LayoutMode = Microsoft.Office.Interop.Word.WdLayoutMode.wdLayoutModeLineGrid;//版式模式为“只指定行网格” 三、光标移动 //移动光标
//光标下移3行 上移3行
object unit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
object count = ;
WApp.Selection.MoveEnd(ref unit,ref count);
WApp.Selection.MoveUp(ref unit, ref count, ref missing); //Microsoft.Office.Interop.Word.WdUnits说明
//wdCell A cell.
//wdCharacter A character.
//wdCharacterFormatting Character formatting.
//wdColumn A column.
//wdItem The selected item.
//wdLine A line. //行
//wdParagraph A paragraph.
//wdParagraphFormatting Paragraph formatting.
//wdRow A row.
//wdScreen The screen dimensions.
//wdSection A section.
//wdSentence A sentence.
//wdStory A story.
//wdTable A table.
//wdWindow A window.
//wdWord A word. //录制的vb宏
// ,移动光标至当前行首
// Selection.HomeKey unit:=wdLine
// '移动光标至当前行尾
// Selection.EndKey unit:=wdLine
// '选择从光标至当前行首的内容
// Selection.HomeKey unit:=wdLine, Extend:=wdExtend
// '选择从光标至当前行尾的内容
// Selection.EndKey unit:=wdLine, Extend:=wdExtend
// '选择当前行
// Selection.HomeKey unit:=wdLine
// Selection.EndKey unit:=wdLine, Extend:=wdExtend
// '移动光标至文档开始
// Selection.HomeKey unit:=wdStory
// '移动光标至文档结尾
// Selection.EndKey unit:=wdStory
// '选择从光标至文档开始的内容
// Selection.HomeKey unit:=wdStory, Extend:=wdExtend
// '选择从光标至文档结尾的内容
// Selection.EndKey unit:=wdStory, Extend:=wdExtend
// '选择文档全部内容(从WholeStory可猜出Story应是当前文档的意思)
// Selection.WholeStory
// '移动光标至当前段落的开始
// Selection.MoveUp unit:=wdParagraph
// '移动光标至当前段落的结尾
// Selection.MoveDown unit:=wdParagraph
// '选择从光标至当前段落开始的内容
// Selection.MoveUp unit:=wdParagraph, Extend:=wdExtend
// '选择从光标至当前段落结尾的内容
// Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
// '选择光标所在段落的内容
// Selection.MoveUp unit:=wdParagraph
// Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
// '显示选择区的开始与结束的位置,注意:文档第1个字符的位置是0
// MsgBox ("第" & Selection.Start & "个字符至第" & Selection.End & "个字符")
// '删除当前行
// Selection.HomeKey unit:=wdLine
// Selection.EndKey unit:=wdLine, Extend:=wdExtend
// Selection.Delete
// '删除当前段落
// Selection.MoveUp unit:=wdParagraph
// Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
// Selection.Delete //表格的光标移动
//光标到当前光标所在表格的地单元格
WApp.Selection.Tables[].Cell(, ).Select();
//unit对象定义
object unith = Microsoft.Office.Interop.Word.WdUnits.wdRow;//表格行方式
object extend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;/**////extend对光标移动区域进行扩展选择
object unitu = Microsoft.Office.Interop.Word.WdUnits.wdLine;//文档行方式,可以看成表格一行.不过和wdRow有区别
object unitp = Microsoft.Office.Interop.Word.WdUnits.wdParagraph;//段落方式,对于表格可以选择到表格行后的换车符,对于跨行合并的行选择,我能找到的最简单方式
object count=;//光标移动量
下面代码演示对于存在合并单元格的选择操作.合并单元格的选择问题一直是word的bug.部分object对象参照上面代码 上面这个是表格合并样式.要如何才能选择2行标题栏尼.看下面代码 //定位到表格第1单元格
WApp.Selection.Tables[].Cell(, ).Select();
//定位到第1个单元格第1个字符前
WApp.Selection.HomeKey(ref unith, ref missing);
//扩展到行尾,选择表第1行
WApp.Selection.EndKey(ref unith, ref extend);
//定义表格标题的行数量,titlerow为参数
object strtitlerow=titlerow-;
//移动光标选择第1行的末尾段落标记
WApp.Selection.MoveDown(ref unitp, ref count, ref extend);
//选择下一行,因为合并的原因,如表格标题最后列是合并,只选择了2行的部分
WApp.Selection.MoveDown(ref unitu, ref strtitlerow, ref extend);
//扩展到该行的末端,保证合并行能全部选择到
WApp.Selection.EndKey(ref unith, ref extend);
//复制选择内容到剪贴板
WApp.Selection.Copy();
//下面是移动光标到任何位置并粘贴内容.我程序中目的是到表格换页的时候自动插入下一页的表头.
WApp.Selection.Tables[].Cell(System.Convert.ToInt32(strRownum), ).Select();
WApp.Selection.HomeKey(ref unith, ref missing);
WApp.Selection.Paste();
四、段落格式设定
//段落格式设定
WApp.Selection.ParagraphFormat.LeftIndent = WApp.CentimetersToPoints(float.Parse(""));//左缩进
WApp.Selection.ParagraphFormat.RightIndent = WApp.CentimetersToPoints(float.Parse(""));//右缩进
WApp.Selection.ParagraphFormat.SpaceBefore =float.Parse("");//段前间距
WApp.Selection.ParagraphFormat.SpaceBeforeAuto =;//
WApp.Selection.ParagraphFormat.SpaceAfter = float.Parse("");//段后间距
WApp.Selection.ParagraphFormat.SpaceAfterAuto = ;//
WApp.Selection.ParagraphFormat.LineSpacingRule = Microsoft.Office.Interop.Word.WdLineSpacing.wdLineSpaceSingle;//单倍行距
WApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;//段落2端对齐
WApp.Selection.ParagraphFormat.WidowControl = ;//孤行控制
WApp.Selection.ParagraphFormat.KeepWithNext = ;//与下段同页
WApp.Selection.ParagraphFormat.KeepTogether = ;//段中不分页
WApp.Selection.ParagraphFormat.PageBreakBefore = ;//段前分页
WApp.Selection.ParagraphFormat.NoLineNumber = ;//取消行号
WApp.Selection.ParagraphFormat.Hyphenation = ;//取消段字
WApp.Selection.ParagraphFormat.FirstLineIndent = WApp.CentimetersToPoints(float.Parse(""));//首行缩进
WApp.Selection.ParagraphFormat.OutlineLevel = Microsoft.Office.Interop.Word.WdOutlineLevel.wdOutlineLevelBodyText;
WApp.Selection.ParagraphFormat.CharacterUnitLeftIndent = float.Parse("");
WApp.Selection.ParagraphFormat.CharacterUnitRightIndent = float.Parse("");
WApp.Selection.ParagraphFormat.CharacterUnitFirstLineIndent = float.Parse("");
WApp.Selection.ParagraphFormat.LineUnitBefore = float.Parse("");
WApp.Selection.ParagraphFormat.LineUnitAfter = float.Parse("");
WApp.Selection.ParagraphFormat.AutoAdjustRightIndent = ;
WApp.Selection.ParagraphFormat.DisableLineHeightGrid =;
WApp.Selection.ParagraphFormat.FarEastLineBreakControl =;
WApp.Selection.ParagraphFormat.WordWrap = ;
WApp.Selection.ParagraphFormat.HangingPunctuation = ;
WApp.Selection.ParagraphFormat.HalfWidthPunctuationOnTopOfLine = ;
WApp.Selection.ParagraphFormat.AddSpaceBetweenFarEastAndAlpha = ;
WApp.Selection.ParagraphFormat.AddSpaceBetweenFarEastAndDigit = ;
WApp.Selection.ParagraphFormat.BaseLineAlignment = Microsoft.Office.Interop.Word.WdBaselineAlignment.wdBaselineAlignAuto; 五、字体格式设定
//字体格式设定
WApp.Selection.Font.NameFarEast = "华文中宋";
WApp.Selection.Font.NameAscii = "Times New Roman";
WApp.Selection.Font.NameOther = "Times New Roman";
WApp.Selection.Font.Name = "宋体";
WApp.Selection.Font.Size = float.Parse("");
WApp.Selection.Font.Bold = ;
WApp.Selection.Font.Italic = ;
WApp.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;
WApp.Selection.Font.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;
WApp.Selection.Font.StrikeThrough =;//删除线
WApp.Selection.Font.DoubleStrikeThrough = ;//双删除线
WApp.Selection.Font.Outline =;//空心
WApp.Selection.Font.Emboss = ;//阳文
WApp.Selection.Font.Shadow = ;//阴影
WApp.Selection.Font.Hidden = ;//隐藏文字
WApp.Selection.Font.SmallCaps = ;//小型大写字母
WApp.Selection.Font.AllCaps = ;//全部大写字母
WApp.Selection.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;
WApp.Selection.Font.Engrave = ;//阴文
WApp.Selection.Font.Superscript = ;//上标
WApp.Selection.Font.Subscript = ;//下标
WApp.Selection.Font.Spacing = float.Parse("");//字符间距
WApp.Selection.Font.Scaling = ;//字符缩放
WApp.Selection.Font.Position = ;//位置
WApp.Selection.Font.Kerning = float.Parse("");//字体间距调整
WApp.Selection.Font.Animation = Microsoft.Office.Interop.Word.WdAnimation.wdAnimationNone;//文字效果
WApp.Selection.Font.DisableCharacterSpaceGrid =false;
WApp.Selection.Font.EmphasisMark = Microsoft.Office.Interop.Word.WdEmphasisMark.wdEmphasisMarkNone; 六、终于找到了获取光标位置的东东。那里找到的忘了,感谢提供的老大。放到这里供大家参考。
有了这个和上面内容,相信大家对word文档的控制应该到了随心所欲的地步,爽啊
获取的c#语法 //get_Information
Selection.get_Information(WdInformation.wdActiveEndPageNumber)
//关于行号-页号-列号-位置
//information 属性
//返回有关指定的所选内容或区域的信息。variant 类型,只读。
//expression.information(type)
//expression 必需。该表达式返回一个 range 或 selection 对象。
//type long 类型,必需。需要返回的信息。可取下列 wdinformation 常量之一:
//wdactiveendadjustedpagenumber 返回页码,在该页中包含指定的所选内容或区域的活动结尾。如果设置了一个起始页码,并对页码进行了手工调整,则返回调整过的页码。
//wdactiveendpagenumber 返回页码,在该页中包含指定的所选内容或区域的活动结尾,页码从文档的开头开始计算而不考虑对页码的任何手工调整。
//wdactiveendsectionnumber 返回节号,在该节中包含了指定的所选内容或区域的活动结尾。
//wdatendofrowmarker 如果指定的所选内容或区域位于表格的行结尾标记处,则本参数返回 true。
//wdcapslock 如果大写字母锁定模式有效,则本参数返回 true。
//wdendofrangecolumnnumber 返回表格列号,在该表格列中包含了指定的所选内容或区域的活动结尾。
//wdendofrangerownumber 返回表格行号,在该表格行包含了指定的所选内容或区域的活动结尾。
//wdfirstcharactercolumnnumber 返回指定的所选内容或区域中第一个字符的位置。如果所选内容或区域是折叠的,则返回所选内容或区域右侧紧接着的字符编号。
//wdfirstcharacterlinenumber 返回所选内容中第一个字符的行号。如果 pagination 属性为 false,或 draft 属性为 true,则返回 - 1。
//wdframeisselected 如果所选内容或区域是一个完整的图文框文本框,则本参数返回 true。
//wdheaderfootertype 返回一个值,该值表明包含了指定的所选内容或区域的页眉或页脚的类型,如下表所示。 值 页眉或页脚的类型
//- 1 无
//0 偶数页页眉
//1 奇数页页眉
//2 偶数页页脚
//3 奇数页页脚
//4 第一个页眉
//5 第一个页脚
//wdhorizontalpositionrelativetopage 返回指定的所选内容或区域的水平位置。该位置是所选内容或区域的左边与页面的左边之间的距离,以磅为单位。如果所选内容或区域不可见,则返回 - 1。
//wdhorizontalpositionrelativetotextboundary 返回指定的所选内容或区域相对于周围最近的正文边界的左边的水平位置,以磅为单位。如果所选内容或区域没有显示在当前屏幕,则本参数返回 - 1。
//wdinclipboard 有关此常量的详细内容,请参阅 microsoft office 98 macintosh 版的语言参考帮助。
//wdincommentpane 如果指定的所选内容或区域位于批注窗格,则返回 true。
//wdinendnote 如果指定的所选内容或区域位于页面视图的尾注区内,或者位于普通视图的尾注窗格中,则本参数返回 true。
//wdinfootnote 如果指定的所选内容或区域位于页面视图的脚注区内,或者位于普通视图的脚注窗格中,则本参数返回 true。
//wdinfootnoteendnotepane 如果指定的所选内容或区域位于页面视图的脚注或尾注区内,或者位于普通视图的脚注或尾注窗格中,则本参数返回 true。详细内容,请参阅前面的 wdinfootnote 和 wdinendnote 的说明。
//wdinheaderfooter 如果指定的所选内容或区域位于页眉或页脚窗格中,或者位于页面视图的页眉或页脚中,则本参数返回 true。
//wdinmasterdocument 如果指定的所选内容或区域位于主控文档中,则本参数返回 true。
//wdinwordmail 返回一个值,该值表明了所选内容或区域的的位置,如下表所示。值 位置
//0 所选内容或区域不在一条电子邮件消息中。
//1 所选内容或区域位于正在发送的电子邮件中。
//2 所选内容或区域位于正在阅读的电子邮件中。
//wdmaximumnumberofcolumns 返回所选内容或区域中任何行的最大表格列数。
//wdmaximumnumberofrows 返回指定的所选内容或区域中表格的最大行数。
//wdnumberofpagesindocument 返回与所选内容或区域相关联的文档的页数。
//wdnumlock 如果 num lock 有效,则本参数返回 true。
//wdovertype 如果改写模式有效,则本参数返回 true。可用 overtype 属性改变改写模式的状态。
//wdreferenceoftype 返回一个值,该值表明所选内容相对于脚注、尾注或批注引用的位置,如下表所示。 值 描述
//— 1 所选内容或区域包含、但不只限定于脚注、尾注或批注引用中。
//0 所选内容或区域不在脚注、尾注或批注引用之前。
//1 所选内容或区域位于脚注引用之前。
//2 所选内容或区域位于尾注引用之前。
//3 所选内容或区域位于批注引用之前。
//wdrevisionmarking 如果修订功能处于活动状态,则本参数返回 true。
//wdselectionmode 返回一个值,该值表明当前的选定模式,如下表所示。 值 选定模式
//0 常规选定
//1 扩展选定
//2 列选定
//wdstartofrangecolumnnumber 返回所选内容或区域的起点所在的表格的列号。
//wdstartofrangerownumber 返回所选内容或区域的起点所在的表格的行号。
//wdverticalpositionrelativetopage 返回所选内容或区域的垂直位置,即所选内容的上边与页面的上边之间的距离,以磅为单位。如果所选内容或区域没有显示在屏幕上,则本参数返回 - 1。
//wdverticalpositionrelativetotextboundary 返回所选内容或区域相对于周围最近的正文边界的上边的垂直位置,以磅为单位。如果所选内容或区域没有显示在屏幕上,则本参数返回 - 1。
//wdwithintable 如果所选内容位于一个表格中,则本参数返回 true。
//wdzoompercentage 返回由 percentage 属性设置的当前的放大百分比。

参考资料:

http://blog.csdn.net/ruby97/article/details/7406806

http://blog.csdn.net/yhrun/article/details/7674540

http://www.cnblogs.com/eye-like/p/4121219.html

http://www.cnblogs.com/knowledgesea/archive/2013/05/24/3095376.html

http://www.cnblogs.com/shi2172843/p/5848116.html

https://msdn.microsoft.com/en-us/library/bb257531(v=office.12).aspx

http://wenku.baidu.com/view/80ec0a6c1eb91a37f1115cab.html?from=search

---------------------
作者:xh6300
来源:CNBLOGS
原文:https://www.cnblogs.com/xh6300/p/5915717.html
版权声明:本文为作者原创文章,转载请附上博文链接!

[转]C#操作Word的超详细总结的更多相关文章

  1. C#操作Word的超详细总结 ---转载

    C#操作Word的超详细总结 本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设 ...

  2. C#操作Word的超详细总结

    本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置 ...

  3. 【转】C#操作Word的超详细总结

    本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置 ...

  4. C语言文件操作函数大全(超详细)

    C语言文件操作函数大全(超详细) 作者: 字体:[增加 减小] 类型:转载 本篇文章是对C语言中的文件操作函数进行了详细的总结分析,需要的朋友参考下   fopen(打开文件)相关函数 open,fc ...

  5. C语言字符串操作总结大全(超详细)

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

  6. VMware手动添加centos7硬盘图文操作及分区超详细

    先设置虚拟机 启动的虚拟机,新关机再设置 1.选择指定虚拟机,点击硬盘 2.虚拟机设置,点击左下角“添加” 3.硬件类型选择硬盘,点击下一步 4.添加硬件向导默认就行,下一步 5.选择磁盘,默认选中, ...

  7. C语言学习笔记 (008) - C语言字符串操作总结大全(超详细)(转)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

  8. C语言字符串操作总结大全(超详细)【转】

    转自:http://www.jb51.net/article/37410.htm )字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strc ...

  9. [转]C语言字符串操作总结大全(超详细)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

随机推荐

  1. 2018-12-29-WPF-如何建立自己的-3d-gis-程序

    title author date CreateTime categories WPF 如何建立自己的 3d gis 程序 lindexi 2018-12-29 14:11:11 +0800 2018 ...

  2. 为什么你应该使用OpenGL而不是DirectX?

    这是一篇很意思的博文,原文链接为:http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX 大家可以思考一下: ...

  3. tar解压.tar.bz2文件失败:tar: Error is not recoverable: exiting now

    使用tar解压.tar.bz2文件: tar -jxvf xxxx.tar.bz2 报如下错误: 原因:未安装bzip yum -y install bzip2

  4. JS运算的优先级

    汇总表 下面的表将所有运算符按照优先级的不同从高到低排列. 优先级 运算类型 关联性 运算符 20 圆括号 n/a ( … ) 19 成员访问 从左到右 … . … 需计算的成员访问 从左到右 … [ ...

  5. iOS viewDidLayoutSubviews,viewdidload

    由于种种原因,最近才开始真正在新项目中使用autolayout,使用过程中虽说是比较顺畅,但是也遇到了一些麻烦,比如: 我使用的XIB默认是4寸屏幕,我再XIB中增加一个viewA,宽度为320,约束 ...

  6. Effective Modern C++:01类型推导

    C++的官方钦定版本,都是以ISO标准被接受的年份命名,分别是C++98,C++03,C++11,C++14,C++17,C++20等.C++11及其后续版本统称为Modern C++. C++11之 ...

  7. 程序中提醒用户进去App Store 评分 跳转 代码

           大家都知道,评论和评分是决定app在appstore中排名的重要因素,但是大部分用户下载安装APP后却不会去点评,所以添加提示用户去点评的功能是很必要的,如下是代码: 很多用户用了好软件 ...

  8. Python sorted

    sorted函数: iterable:是可迭代类型;cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一 ...

  9. 【JZOJ4876】【NOIP2016提高A组集训第10场11.8】基因突变

    题目描述 邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类 ...

  10. python 不定长参数*args