vsto-Word相关操作

Posted 一只蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vsto-Word相关操作相关的知识,希望对你有一定的参考价值。

//添加页码到页脚
Document doc = Globals.ThisAddIn.Application.ActiveDocument;
HeaderFooter hprimary= doc.Sections[1].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[1].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);  //分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[1]; //获取当前文档中第一个图形对象 InlineShape igs = Globals.ThisAddIn.Application.ActiveDocument.InlineShapes[1]; //获取当前文档中第一个图片对象 InlineShape idfs= range.InlineShapes[1]; //获取指定区域中第一个图片对象 idfs.Range.Select(); Shape sr = range.ShapeRange[1]; //获取指定区域中第一个图形对象
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 = 40;
        ils.ScaleWidth = 40;
      }
    }
  }
}

 

 

 

//Table的相关操作
Table t=range.Tables.Add(range,2,2);
t.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleThickThinLargeGap;  ////设置Table的外边框线格式
t.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
foreach (Row item in t.Rows)
{
     item.Height = 32;     //设置行高
     Range rowRange = item.Cells [1].Range;
     Table rowT = rowRange.Tables.Add(rowRange, 1, 17);   //嵌套Table
     rowT.Rows.Height = 24;
     rowT.Columns.Width = 24;    //设置列宽
     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(1,1).Range.Text="Test";   //下标都是从1开始
//单元格中文本格式比较复杂的可以作为段落
 Paragraph pTitle = t.Cell(2, 1).Range.Paragraphs.Add(t.Cell(1, 1).Range);            
pTitle.Range.Font.Size = 24;
pTitle.Range.Text = "这里是标题";
pTitle.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;   //设置水平居中

 

 

以上是关于vsto-Word相关操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——git命令操作一个完整流程

AJAX相关JS代码片段和部分浏览器模型

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段

Jekyll 偏移代码片段高亮的初始行