文档章节

DocX在C#中的基本操作方法

彭泽0902
 彭泽0902
发布于 2016/11/24 18:47
字数 908
阅读 13
收藏 0
点赞 0
评论 0

    用了一个星期把园子里2016年中有关.net的文章都看了,有些只是大致的看了一下,在看的同时也在记录一些通用的方法。发现有很多对NPOI的文档,主要是操作Excl的方法,却很少有关文档类型的方法。

    在项目开发中,一般需要对文档进行操作,但是使用微软提供的插件,需要安装一些程序,并且如果使用wps类的文档软件就无法操作了,第三方插件DocX就可以很好的解决这些文档,结合官方提供的文档,稍作修改,总结如下的一些方法:

    1.创建一个具有超链接、图像和表的文档:

  

/// <summary>
        /// 创建一个具有超链接、图像和表的文档。
        /// </summary>
        /// <param name="path">文档保存路径</param>
        /// <param name="imagePath">加载的图片路径</param>
        public static void HyperlinksImagesTables(string path, string imagePath)
        {
            // 创建一个文档
            using (var document = DocX.Create(path))
            {
                // 在文档中添加超链接。
                var link = document.AddHyperlink("link", new Uri("http://www.google.com"));
                // 在文档中添加一个表。
                var table = document.AddTable(2, 2);
                table.Design = TableDesign.ColorfulGridAccent2;
                table.Alignment = Alignment.center;
                table.Rows[0].Cells[0].Paragraphs[0].Append("1");
                table.Rows[0].Cells[1].Paragraphs[0].Append("2");
                table.Rows[1].Cells[0].Paragraphs[0].Append("3");
                table.Rows[1].Cells[1].Paragraphs[0].Append("4");
                var newRow = table.InsertRow(table.Rows[1]);
                newRow.ReplaceText("4", "5");
                // 将图像添加到文档中。    
                var image = document.AddImage(imagePath);
                //创建一个图片(一个自定义视图的图像)。
                var picture = image.CreatePicture();
                picture.Rotation = 10;
                picture.SetPictureShape(BasicShapes.cube);
                // 在文档中插入一个新段落。
                var title = document.InsertParagraph().Append("Test").FontSize(20).Font(new FontFamily("Comic Sans MS"));
                title.Alignment = Alignment.center;
                // 在文档中插入一个新段落。
                var p1 = document.InsertParagraph();
                // 附加内容到段落
                p1.AppendLine("This line contains a ").Append("bold").Bold().Append(" word.");
                p1.AppendLine("Here is a cool ").AppendHyperlink(link).Append(".");
                p1.AppendLine();
                p1.AppendLine("Check out this picture ").AppendPicture(picture).Append(" its funky don't you think?");
                p1.AppendLine();
                p1.AppendLine("Can you check this Table of figures for me?");
                p1.AppendLine();
                // 在第1段后插入表格。
                p1.InsertTableAfterSelf(table);
                // 在文档中插入一个新段落。
                Paragraph p2 = document.InsertParagraph();
                // 附加内容到段落。
                p2.AppendLine("Is it correct?");
                // 保存当前文档
                document.Save();
            }
        }

2.设置文档的标题和页脚:

        /// <summary>
        /// 设置文档的标题和页脚
        /// </summary>
        /// <param name="path">文档的路径</param>
        public static bool HeadersAndFooters(string path)
        {
            try
            {
                // 创建新文档
                using (var document = DocX.Create(path))
                {
                    // 这个文档添加页眉和页脚。
                    document.AddHeaders();
                    document.AddFooters();
                    // 强制第一个页面有一个不同的头和脚。
                    document.DifferentFirstPage = true;
                    // 奇偶页页眉页脚不同
                    document.DifferentOddAndEvenPages = true;
                    // 获取本文档的第一个、奇数和甚至是头文件。
                    Header headerFirst = document.Headers.first;
                    Header headerOdd = document.Headers.odd;
                    Header headerEven = document.Headers.even;
                    // 获取此文档的第一个、奇数和甚至脚注。
                    Footer footerFirst = document.Footers.first;
                    Footer footerOdd = document.Footers.odd;
                    Footer footerEven = document.Footers.even;
                    // 将一段插入到第一个头。
                    Paragraph p0 = headerFirst.InsertParagraph();
                    p0.Append("Hello First Header.").Bold();
                    // 在奇数头中插入一个段落。
                    Paragraph p1 = headerOdd.InsertParagraph();
                    p1.Append("Hello Odd Header.").Bold();
                    // 插入一个段落到偶数头中。
                    Paragraph p2 = headerEven.InsertParagraph();
                    p2.Append("Hello Even Header.").Bold();
                    // 将一段插入到第一个脚注中。
                    Paragraph p3 = footerFirst.InsertParagraph();
                    p3.Append("Hello First Footer.").Bold();
                    // 在奇数脚注中插入一个段落。
                    Paragraph p4 = footerOdd.InsertParagraph();
                    p4.Append("Hello Odd Footer.").Bold();
                    // 插入一个段落到偶数头中。
                    Paragraph p5 = footerEven.InsertParagraph();
                    p5.Append("Hello Even Footer.").Bold();
                    // 在文档中插入一个段落。
                    Paragraph p6 = document.InsertParagraph();
                    p6.AppendLine("Hello First page.");
                    // 创建一个第二个页面,显示第一个页面有自己的头和脚。
                    p6.InsertPageBreakAfterSelf();
                    // 在页面中断后插入一段。
                    Paragraph p7 = document.InsertParagraph();
                    p7.AppendLine("Hello Second page.");
                    // 创建三分之一页面显示,奇偶页不同的页眉和页脚。
                    p7.InsertPageBreakAfterSelf();
                    // 在页面中断后插入一段。
                    Paragraph p8 = document.InsertParagraph();
                    p8.AppendLine("Hello Third page.");
                    // 将属性保存入文档
                    document.Save();
                    return true;
                }

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            //从内存中释放此文档。
        }

 

© 著作权归作者所有

共有 人打赏支持
彭泽0902
粉丝 0
博文 44
码字总数 57771
作品 0
武汉
高级程序员
新手上路 | 上传Word文件形成存储型XSS路径

  在渗透测试过程中,每当看到目标测试网站存在上传功能时,总会激起我的好奇心。如果能够走运的话,若目标网站服务器是PHP或ASP架构,而且上传功能没作后缀过滤,这样就能导致可以直接上传...

FreeBuf.COM ⋅ 05/31 ⋅ 0

新手上路 上传Word文件形成存储型XSS路径

        在渗透测试过程中,每当看到目标测试网站存在上传功能时,总会激起我的好奇心。如果能够走运的话,若目标网站服务器是PHP或ASP架构,而且上传功能没作后缀过滤,这样就能导致可...

FreeBuf ⋅ 05/31 ⋅ 0

python 编写自动化小工具 未完成

python 编写自动化小工具 Python split() python数据类型之间的转换 str(demo) python换行写入文件 !/usr/bin/env python ecoding=utf-8 f=open(r"D:opsdevolduseroldused.txt","a+") newlin......

iOS_愛OS ⋅ 前天 ⋅ 0

新人求助,在运行的python-docx脚本的时候,老是报:ImportError: cannot import name 'Document' 这个错误。

新人求助,在运行的python-docx脚本的时候,老是报:ImportError: cannot import name 'Document' 这个错误。 可我的python-docx包和lxml包都已安装好了,并且在调用时候并没有报错,只是一运...

注册验证码真晃眼 ⋅ 05/02 ⋅ 0

利用Python好好的整理你的附件

目前我的文件夹中有500多份简历,如果我想知道一些信息,比如学校,学历之类的,我需要打开每一份word去查看,太耗时间了。这个时候python需要出马了。 目标 目前类似截图中的word有600+,想...

Bug生活2048 ⋅ 05/10 ⋅ 0

git compare for docx file

https://github.com/vigente/gerardus/wiki/Integrate-git-diffs-with-word-docx-files This section was inspired by Martin Fenner's "Using Microsoft Word with git". To configure git ......

Oscarfff ⋅ 04/28 ⋅ 0

java获取word里面的文本

需求场景   开发的web办公系统如果需要处理大量的Word文档(比如有成千上万个文档),用户一定提出查找包含某些关键字的文档的需求,这就要求能够读取 word 中的文字内容,而忽略其中的文字...

山里的红杏 ⋅ 05/10 ⋅ 0

GoodERP 18.16 发布,开源企业管理软件

2018/04/09 ~ 2018/04/15 sale 模块 [增加]采购单销售单增加数量合计字段 [改进]将订单审核改为订单确认,收发货单审核改为收发货 [改进]销售价不允许仓库看到 [改进]销货订单上下单时选择物...

GoodERP ⋅ 04/16 ⋅ 0

Python将md批量转为docx

这两天写毕业论文, 发现了一个可以将markdown快速转为word格式的小工具pandoc, 非常好用, 比如我有一个名为的文件, 我只需在命令行运行 即根据md文件生成新的docx文件! pandoc支持相互转换的...

木子昭 ⋅ 05/10 ⋅ 0

java动态填充word文档并上传到服务器

一、 需求背景   在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式...

山里的红杏 ⋅ 05/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部