因项目需要,给word文档的书签赋值,框架没有相关内容,于是自己上网加上查看文档,成功搞定该功能。下面是我的实现过程:

首先需要引用nuget包: Microsoft.Office.Interop.Word,我下载的是12.0.0版本的,刚开始下载的15.0.0版本的无法使用,暂时不知道为什么,有空研究一下;然后就是代码实现:

/// <summary>
/// 版 本
/// Copyright (c) 2018-2018
/// 创建人:Yu
/// 日 期:2018.04.17
/// word操作
/// </summary
public class WordHelp
{
ApplicationClass wordApp = new ApplicationClass();
Document doc;
/// <summary>
/// 生成文件存放地址
/// </summary>
public string newPath { get; set; }
/// <summary>
/// 生成的新文件文件夹路径
/// </summary>
public string newDicPath { get; set; }
/// <summary>
/// 无参构造方法
/// </summary>
public WordHelp() { }
/// <summary>
/// 打开模板
/// </summary>
/// <param name="fileName">文档名</param>
public WordHelp(string filePath)
{
try
{
var FileLocation = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
var oldPath = FileLocation + filePath;
RandomPW randomPW = new RandomPW();
var random = randomPW.GetRandomPW();
newPath = FileLocation + "new\\" + random + "\\" + filePath;
while (!File.Exists(newPath))
{
random = randomPW.GetRandomPW();
newPath = FileLocation + "new\\" + random + "\\" + filePath;
Directory.CreateDirectory(FileLocation + "new\\" + random + "\\");
File.Copy(oldPath, newPath);
}
newDicPath = FileLocation + "new\\" + random + "\\";
object fileobj = newPath;
object nullobj = System.Reflection.Missing.Value;
//打开指定文件(不同版本的COM参数个数有差异,一般而言除第一个外都用nullobj就行了)
doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj);
}
catch (Exception e)
{
Close();
DelDic(newPath);
}
}
/// <summary>
///获取word的书签集合
/// </summary>
/// <returns></returns>
public List<string> GetBookmarks()
{
List<string> bookmarks = new List<string> { };
foreach (Bookmark bk in doc.Bookmarks)
{
bookmarks.Add(bk.Name);
}
return bookmarks;
} /// <summary>
/// 给书签赋值
/// </summary>
/// <param name="key">书签名</param>
/// <param name="value">书签值</param>
public void SetBookmarks(object key, string value) => doc.Bookmarks.get_Item(ref key).Range.Text = value;
/// <summary>
/// 关闭io
/// </summary>
public void Close() => doc.Close();
/// <summary>
/// 删除生成的文件
/// </summary>
/// <param name="filePath"></param>
public void DelDic(string filePath)=> Directory.Delete(filePath, true);
}

然后发现程序运行时还是报错,

未加载加程序集Microsoft.Office.Interop.Word………………

查看了一下,原来是我没有安装office,我安装的是2007版本,安装之后可以使用。

c#操作word书签的更多相关文章

  1. C# 操作Word书签(二)——插入图片、表格到书签;读取、替换书签

    概要 书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间.在前一篇文章“C# 如何添加/删除Word书签”中介绍了插入.删除书签的方法,本篇文章将对C# 操作Word书签的功能做进 ...

  2. Java 操作Word书签(二):添加文本、图片、表格到书签内容

    在Java操作Word书签(一)中介绍了给Word中的特定段落或文字添加书签.读取及删除已有书签的方法,本文将继续介绍Java 操作Word书签的方法,即如何给已有的书签添加内容,包括添加文本.图片. ...

  3. Java 操作Word书签(三):用文本、图片、表格替换书签

    本篇文章将继续介绍通过Java来操作Word书签的方法,即替换Word中已有书签,包括用新的文本.图片.表格等替换原有书签处的内容. 使用工具:Free Spire.Doc for Java (免费版 ...

  4. Java 操作Word书签(一):添加、删除、读取书签

    Word中,书签功能常用于查找.定位.标记特定字符或段落,对于篇幅较大的文档,此功能非常实用.下面,将介绍通过Java程序来添加及删除Word书签的方法.示例要点包括: 1. 添加书签 1.1 给指定 ...

  5. C#操作Word文档(加密、解密、对应书签插入分页符)

    原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...

  6. C#中操作Word(1)—— word对象模型介绍

    一.开发环境布置 C#中添加对Word的支持,只需添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签页 ...

  7. C#操作word模板插入文字、图片及表格详细步骤

    c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...

  8. C#操作Word的辅助类(word2003) 修改完善版

    转自:http://blog.csdn.net/jiutao_tang/article/details/6567608 该类在他人编写的几个类基础上扩展完善而来,主要功能有: (1)插入文本 (2)插 ...

  9. Aspose.Words操作word生成PDF文档

    Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...

随机推荐

  1. Flutter打开第三方应用

    在flutter中打开第三方应用可以使用url_launcher插件 打开https://pub.dartlang.org/,然后搜索url_launcher,然后点击进入该插件界面 大家在insta ...

  2. PHP学习之PHP代码的优化

    if代码块的优化 if(1===$orderState){     $status='success'; }else{     $status='error'; } return $status; 简 ...

  3. C# WinForm设置窗口无边框、窗口可移动、窗口显示在屏幕中央、控件去边框

    1)窗口去除边框 在组件属性中FormBorderStyle设为None 2)窗口随着鼠标移动而动 添加引用using System.Runtime.InteropServices; 在初始化控件{I ...

  4. LVS系列二、LVS集群-DR模式

    一. LVS-DR和LVS-IP TUN集群概述 1.  Direct Routing(直接路由) Director分配请求到不同的real server.real server处理请求后直接回应给用 ...

  5. js 生成树以及关键字搜索生成树

    function main(keywords,data){ function fn(arr){ var flag = false; for(var i = 0;i <arr.length;i++ ...

  6. c/c++编码规范(1)--头文件

    最近工作稍微轻松一点,就再学习了一下编码规范.遂记些笔记,以便查阅. 这次学习的是Google 开源项目风格指南中文版,地址是:http://zh-google-styleguide.readthed ...

  7. Python list、tuple、dict区别

    Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系. 每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来 您可以通过 key 来引用其值 ...

  8. React Hook 学习

    1.官方文档 https://react.docschina.org/docs/hooks-intro.html 2.阮一峰 reactHook http://www.ruanyifeng.com/b ...

  9. 配置glance使用ceph作为后端存储

    在ceph监视器上执行 1.创建pool池 为glance服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1) ceph osd pool create glance-images  ...

  10. 【052-week 预习周】学习总结

    目录 学习手册 学习理念 学员精选 课前准备 概览 数据结构思维导图 算法思维导图 学习手册 学习理念 让优秀的人一起学习 师傅领进门,修行靠个人 学员精选 稻盛和夫"六项精进" ...