176 lines
5.9 KiB
C#
176 lines
5.9 KiB
C#
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<Response<ProofreadResult>>(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下面的代码示例可用于文档级自定义项。");
|
||
//}
|
||
}
|
||
}
|
||
}
|