2023-12-12 16:53:12 +08:00

176 lines
5.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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下面的代码示例可用于文档级自定义项。");
//}
}
}
}