c#操作word书签
因项目需要,给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书签的更多相关文章
- C# 操作Word书签(二)——插入图片、表格到书签;读取、替换书签
概要 书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间.在前一篇文章“C# 如何添加/删除Word书签”中介绍了插入.删除书签的方法,本篇文章将对C# 操作Word书签的功能做进 ...
- Java 操作Word书签(二):添加文本、图片、表格到书签内容
在Java操作Word书签(一)中介绍了给Word中的特定段落或文字添加书签.读取及删除已有书签的方法,本文将继续介绍Java 操作Word书签的方法,即如何给已有的书签添加内容,包括添加文本.图片. ...
- Java 操作Word书签(三):用文本、图片、表格替换书签
本篇文章将继续介绍通过Java来操作Word书签的方法,即替换Word中已有书签,包括用新的文本.图片.表格等替换原有书签处的内容. 使用工具:Free Spire.Doc for Java (免费版 ...
- Java 操作Word书签(一):添加、删除、读取书签
Word中,书签功能常用于查找.定位.标记特定字符或段落,对于篇幅较大的文档,此功能非常实用.下面,将介绍通过Java程序来添加及删除Word书签的方法.示例要点包括: 1. 添加书签 1.1 给指定 ...
- C#操作Word文档(加密、解密、对应书签插入分页符)
原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...
- C#中操作Word(1)—— word对象模型介绍
一.开发环境布置 C#中添加对Word的支持,只需添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签页 ...
- C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...
- C#操作Word的辅助类(word2003) 修改完善版
转自:http://blog.csdn.net/jiutao_tang/article/details/6567608 该类在他人编写的几个类基础上扩展完善而来,主要功能有: (1)插入文本 (2)插 ...
- Aspose.Words操作word生成PDF文档
Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...
随机推荐
- koa 项目实战(九)passport验证token
1.安装模块 npm install koa-passport -D npm install passport-jwt -D 2.解析token 根目录/config/passport.js cons ...
- Mac配置jdk以及maven
一 Mac配置JDK和Maven 1.安装成功jdk后 2.打开终端后,输入vim ~/.bash_profile 3.输入: export MAVEN_HOME=/usr/local/maven/a ...
- [go]redis基本使用
redis 数据结构操作 import ( "github.com/garyburd/redigo/redis" ) // set c, err := redis.Dial(&qu ...
- [Python]正则匹配字符串 | 蒲公英二维码图片url
代码示例: import re def Find(string): # findall() 查找匹配正则表达式的字符串 url = re.findall('http[s]?://(?:[a-zA-Z] ...
- 深度学习之GAN对抗神经网络
1.结构图 2.知识点 生成器(G):将噪音数据生成一个想要的数据 判别器(D):将生成器的结果进行判别, 3.代码及案例 # coding: utf-8 # ## 对抗生成网络案例 ## # # # ...
- 你真的理解Java中的try/catch/finally吗?
看几个例子,回顾一下执行顺序 例子1 无异常,finally中的return会导致提前返回 public static String test() { try { System.o ...
- 数据中心网络架构的问题与演进 — 混合云与 VPC 专有网络
目录 文章目录 目录 前文列表 历史背景 混合云 Why hybrid cloud? 混合云市场 混合云的逻辑架构 混合云应用场景 灾难恢复 数据备份 负载扩容 应用部署 开发测试生产部署 混合云产品 ...
- Java面试题准备(掌握)
1.使用什么方式进行文件上传? 一般使用FormData对象,ajax异步上传. 为什么使用? 1.FormData对象Mozilla上的介绍的,XMLHttpRequest Level 2添加了一个 ...
- python解析模块(ConfigParser)使用方法
python解析模块(ConfigParser)使用方法 很多软件都有配置文件,今天介绍一下python ConfigParser模块解析配置文件的使用方法 测试配置文件test.conf内容如下: ...
- JAVA 基础编程练习题16 【程序 16 输入 9*9 表】
16 [程序 16 输入 9*9 表] 题目:输出 9*9 口诀. 程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列. package cskaoyan; public class ...