using Microsoft.Office.Interop.Word; using Microsoft.Office.Tools.Ribbon; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Threading; using System.Windows.Forms; using UtilLib; namespace TestWordAddIn1 { public partial class Ribbon1 { private Microsoft.Office.Interop.Word.Application wordApp; private Document document; private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { wordApp = Globals.ThisAddIn.Application; Console.WriteLine("插件加载完成"); } private void button1_Click(object sender, RibbonControlEventArgs e) { var currentText = wordApp.ActiveDocument.Range().Text; Debug.WriteLine(currentText); System.Windows.Forms.MessageBox.Show("Test:" + currentText); } private void button4_Click(object sender, RibbonControlEventArgs e) { // 开始校对 //var doc = wordApp.ActiveDocument; //var content = doc.Content.Text.Trim(); //if (content.Length == 0) //{ // System.Windows.Forms.MessageBox.Show("内容为空"); // return; //} Globals.ThisAddIn.SetPanelVisible(true); } void addMarks() { document = wordApp.ActiveDocument; Range rng = document.Range(2, 4); document.Bookmarks.Add("s24", rng); } private void btnOpenForm_Click(object sender, RibbonControlEventArgs e) { Form1 f1 = new Form1(); f1.ShowDialog(); } private void button8_Click(object sender, RibbonControlEventArgs e) { //var paragrahs = wordApp.ActiveDocument.Paragraphs; Document doc = wordApp.ActiveDocument; object start = 0; object end = 4; System.Windows.Forms.MessageBox.Show("选择0,4"); // 设置区域位置 Range range = doc.Range(ref start, ref end); // 从 start(索引从0开始)到end前一个字符(不包含end) range.Select(); // 选中区域 System.Windows.Forms.MessageBox.Show("即将全选"); wordApp.ActiveDocument.Select(); // 全选 var sentences = doc.Sentences; System.Windows.Forms.MessageBox.Show("句子总计:" + sentences.Count); if (sentences.Count >= 2) { System.Windows.Forms.MessageBox.Show("选中第2个句子"); var s2 = sentences[2]; // 句子的索引从1开始 doc.Range(s2.Start, s2.End).Select(); } System.Windows.Forms.MessageBox.Show("选择2,5"); // 设置区域位置 Range rng = doc.Range(2, 5); rng.Select(); // System.Windows.Forms.MessageBox.Show("向后选择多2个字符"); // 按字符向后移动 rng.MoveEnd(WdUnits.wdCharacter, 2); // 字符向前移动 //rng.MoveStart(WdUnits.wdCharacter, 2); rng.Select(); Thread.Sleep(2000); // 选择第1段 rng = doc.Paragraphs[1].Range; rng.Select(); Thread.Sleep(1000); rng.Collapse(WdCollapseDirection.wdCollapseEnd); // 折叠(wdCollapseEnd:向后,wdCollapseStart:向前) System.Windows.Forms.MessageBox.Show("插入新字符"); rng.Text = "插入新字符"; rng.Select(); } private void button6_Click(object sender, RibbonControlEventArgs e) { wordApp.ActiveDocument.Save(); } private void button3_Click(object sender, RibbonControlEventArgs e) { document = wordApp.ActiveDocument; var txt = "在文档开头指定一个范围,并插入文本 New Text。\n再说一下这个问题哈"; Selection cur = wordApp.Selection; if (cur.Type != WdSelectionType.wdSelectionIP) { MessageBox.Show("异常"); return; } cur.TypeText(txt); AddBookmark(1, 3, "#ff0000"); AddBookmark(4, 6, "#00ff00"); } private Bookmark AddBookmark(int rangeStart, int rangeEnd,string color) { var doc = wordApp.ActiveDocument; Range r = doc.Range(rangeStart, rangeEnd); var mark = doc.Bookmarks.Add("mark_" + rangeStart + "_" + rangeEnd, r); r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(color)); return mark; } private ProofreadResult GetSource() { var content = Http.Get("http://test.wx.wm-app.xyz/proofread.json"); var result = JsonConvert.DeserializeObject>(content); return result.Data; } // 加载文档 private void button2_Click(object sender, RibbonControlEventArgs e) { document = wordApp.ActiveDocument; var cur = wordApp.Selection; if (wordApp.Options.Overtype) { // 禁用 wordApp.Options.Overtype = false; } if (cur.Type != WdSelectionType.wdSelectionIP) { System.Windows.Forms.MessageBox.Show("异常"); return; } var result = GetSource(); result.CorrectedSet.ForEach(it => { cur.TypeText(it.Insert); }); //for (int i = 0; i < 20; i++) //{ // cur.TypeText("-->" + i); // cur.TypeParagraph(); // Thread.Sleep(1000); //} //cur.TypeText("在文档开头指定一个范围,并插入文本 New Text。\n下面的代码示例可用于文档级自定义项。"); //} } } }