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 ...
随机推荐
- springboot发送邮件,以及携带邮件附件简单使用
可以通过springboot官方文档中Sending Email,找到类似如下java mail的使用文档 https://docs.spring.io/spring/docs/5.1.9.RELEA ...
- Mac 卸载mysql
sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM su ...
- Android : 供应商原生开发套件 (VNDK)
一.VNDK概述 VNDK(Vendor Native Development Kit)是一组专门用于vendor实现其HAL的lib库,因为自Android 8.0以来,Google引入了Trebl ...
- MySQL主从双向同步
最近部署测试环境,涉及到MySQL数据库主从双向同步的部署,记录一下部署过程,正常读写都发生在主库,从库作为备选数据库(热备份),当主库发生异常,数据库自动切换到从库,这里面是怎么监控数据库异常并触发 ...
- Nginx设置成服务并开机自动启动
在/etc/init.d下创建文件nginx [root@localhost ~]# vim /etc/init.d/nginx 其内容参考nginx官方文档 需要注意的配置: nginx=”/usr ...
- [git]使用Idea创建一个git项目
第一次使用git的方法,如建立的项目名叫:my-webapp 第一步:在远程gitlab上建立空白项目:my-webapp 第二步:在本地建立项目my-webapp,添加代码 第三步:创建一个本地 ...
- PHP yii2.0框架利用mpdf导出pdf
安装: composer require mpdf/mpdf 使用: use Mpdf\Mpdf;//(php7以前) //获取页面内容 $res = $this->controller-> ...
- ceph报错
[ceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different conten ...
- MATLAB学习(一)数组、变量、表达式、常用简单运算
>> x=[1 2 3;4 5 6;7 8 9] x = 1 2 3 4 5 6 7 8 9 >> y=[1,2,3] y = 1 2 3 >> y=[1,2,3 ...
- uni-app 实现热更新
前端打包 app 即把写好的静态资源文件套壳打包成 app ,而热更新即下载并替换 app 内部的静态资源文件,实现 app 的版本升级. 在uni-app 中,我们是如何实现热更新的呢?下面来看代码 ...