c# - 为什么这种方法从字面上删除书签范围?C#
问题描述
我在一个程序上使用 C# 工作,程序的一个和平需要替换一些书签文本,但只有文本和书签范围需要与我插入的文本长度相同。
我对此进行了搜索,但我坚持使用这种方法:
internal void BookMarkReplaceNative(Document doc,
Bookmark bookmark,
string newText)
{
object rng = bookmark.Range;
string bookmarkName = bookmark.Name;
bookmark.Range.Text = newText;
doc.Bookmarks.Add(bookmarkName, ref rng);
}
举一个例子(CONTR_L 是一个字符串):
Bookmark NR_CONTR =doc.Bookmarks.get_Item("NR_CONTR");
BookMarkReplaceNative(doc,NR_CONTR, CONTR_L);
问题是,一旦程序替换了文本,范围就只是文本的开头,在第一个字母之前。
有什么问题 ?
解决方案
根据我的研究,我可以使用以下代码成功替换书签文本。
using Word = Microsoft.Office.Interop.Word;
Word.Application application = new Word.Application();
Word.Document document = application.Documents.Open("D:\\1.docx");
application.Visible = true;
document.Bookmarks["First"].Select();
application.Selection.TypeText("Firstbook");
document.Save();
application.Quit();
结果:
推荐阅读
- javascript - Javascript按多个字段分组平均值和计数
- php - 如何禁用 WooCommerce 中的运费税?
- mongodb - Criteria MongoTemplate 实现非无条件查询
- python-3.x - 如何以所需的方式绘制图形?
- react-native - 无法将 signInAsync 作为并发 GoogleSignIn 任务启动
- javascript - ASP MVC javascript
- c++ - 降低递归函数的算法时间复杂度
- c++ - 使用来自数据结构的权重的 C++ 离散分布
- sql - 基于订单 ID 和时间戳字段的自定义排序
- java - 无法在 aws EC2 实例上获取 jdbcUrl=jdbc:postgresql:// 的驱动程序实例