vsto-Word相关操作

时间:2024-05-01 18:37:10
//添加页码到页脚
Document doc = Globals.ThisAddIn.Application.ActiveDocument;
HeaderFooter hprimary= doc.Sections[].Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary];
hprimary.Range.Fields.Add(hprimary.Range, WdFieldType.wdFieldPage);
 //添加页脚并显示页码
Document doc = Globals.ThisAddIn.Application.ActiveDocument;
Window activeWindow = doc.Application.ActiveWindow;
object currentPage = WdFieldType.wdFieldPage;
object totalPages = WdFieldType.wdFieldNumPages; // Go to the Footer view
activeWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageFooter;
// Right-align the current selection
activeWindow.ActivePane.Selection.Paragraphs.Alignment =
WdParagraphAlignment.wdAlignParagraphCenter; // Type the page number in 'Page X of Y' format
activeWindow.Selection.TypeText("第 ");
activeWindow.Selection.Fields.Add(
activeWindow.Selection.Range, ref currentPage);
activeWindow.Selection.TypeText("页,共 ");
activeWindow.Selection.Fields.Add(
activeWindow.Selection.Range, ref totalPages);
activeWindow.Selection.TypeText("页 "); //清除页眉横线(不知道为什么页眉会多一条横线)
doc.Sections[].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Borders[WdBorderType.wdBorderBottom].LineStyle =WdLineStyle.wdLineStyleNone;
// Go back to the Main Document view
activeWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument;
//页面配置
PageSetup PAGE = doc.PageSetup;
PAGE.PaperSize = WdPaperSize.wdPaperA3; //A3纸
PAGE.Orientation = WdOrientation.wdOrientLandscape; //横向
PAGE.TextColumns.SetCount(); //分3栏
//定位选中内容的下一行进行操作
Selection sel = Globals.ThisAddIn.Application.Selection; //获取选中内容
sel.InsertParagraph(); //插入新的段落行
Range range = sel.GoToNext(WdGoToItem.wdGoToLine); //定位到新的段落行
range.Text="当前行下一行进行编辑";
//获取指定区域中的文本、图片、图形
Document doc = Globals.ThisAddIn.Application.ActiveDocument;
Range r = doc.Range();
Range range = doc.Range(r.Bookmarks["bookmark1"].Start, r.Bookmarks["bookmark2"].Start);
string text = range.Text; //获取指定区域中的文本内容
//int c = Globals.ThisAddIn.Application.ActiveDocument.Shapes.Count;
Shape s = Globals.ThisAddIn.Application.ActiveDocument.Shapes[]; //获取当前文档中第一个图形对象
InlineShape igs = Globals.ThisAddIn.Application.ActiveDocument.InlineShapes[]; //获取当前文档中第一个图片对象
InlineShape idfs= range.InlineShapes[]; //获取指定区域中第一个图片对象
idfs.Range.Select();
Shape sr = range.ShapeRange[]; //获取指定区域中第一个图形对象
internal void GetImagesInDocument()
{
// iterate through each shape
foreach (InlineShape ils in Globals.ThisAddIn.Application.ActiveDocument.InlineShapes)
  {
    // validate
    if (ils != null)
    {
      // check if image
      if (ils.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture)
      {
        // you can do what you want with the object here
        ils.ScaleHeight = ;
        ils.ScaleWidth = ;
      }
    }
  }
}
 
//Table的相关操作
Table t=range.Tables.Add(range,,);
t.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleThickThinLargeGap; ////设置Table的外边框线格式
t.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
foreach (Row item in t.Rows)
{
item.Height = ; //设置行高
Range rowRange = item.Cells [].Range;
Table rowT = rowRange.Tables.Add(rowRange, , ); //嵌套Table
rowT.Rows.Height = ;
rowT.Columns.Width = ; //设置列宽
rowT.Borders .OutsideLineStyle = WdLineStyle.wdLineStyleSingle;
rowT.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle;
//rowT.Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle; //设置边框顶线
//rowT.Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle; //设置边框底线
//rowT.Borders[WdBorderType.wdBorderLeft].LineStyle = WdLineStyle.wdLineStyleSingle;
//rowT.Borders[WdBorderType.wdBorderRight].LineStyle = WdLineStyle.wdLineStyleSingle;
//rowT.Borders[WdBorderType.wdBorderVertical].LineStyle = WdLineStyle.wdLineStyleSingle; //设置边框内纵线
//rowT.Borders[WdBorderType.wdBorderHorizontal].LineStyle = WdLineStyle.wdLineStyleSingle; //设置边框内横线
item.Cells.VerticalAlignment =WdCellVerticalAlignment.wdCellAlignVerticalCenter; //设置单元格垂直居中
}
//向单元格添加文本
t.Cell(,).Range.Text="Test"; //下标都是从1开始
//单元格中文本格式比较复杂的可以作为段落
Paragraph pTitle = t.Cell(, ).Range.Paragraphs.Add(t.Cell(, ).Range);
pTitle.Range.Font.Size = ;
pTitle.Range.Text = "这里是标题";
pTitle.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; //设置水平居中