开源word操作组件DocX的记录

使用开源word操作组件DocX的记录

1.DocX简介

1.1 简介

  DocX是一个在不需要安装word的情况下对word进行操作的开源轻量级.net组件,是由爱尔兰的一个叫Cathal Coffey的博士生开发出来的。DocX使得操作word非常轻便,有利于减轻开发负担,提升程序效率。DocX在Codeplex和Github上都有开源。

1.2 获取与安装

可以在http://docx.codeplex.com/releases下载获取,也可以直接利用NuGet获取。

Install-Package DocX

1.3 开发环境

用DocX需要.NET framework4.0和VS2010或更高版本。

2.DocX相关常用操作(持续更新中...)

2.1 创建word文档

DocX document = DocX.Create(@"docs\HelloWorld.docx")

2.2 加载word文档

DocX document = DocX.Load(@"docs\HelloWorld.docx")

2.3 书签相关操作

2.3.1 插入书签

var paragraph = document.InsertBookmark("firstBookmark");

2.3.2 根据书签名获取书签

如果知道一个书签的书签名,可以直接得到。

var b = document.Bookmarks["书签1"];

2.3.3 在书签中插入文字

document.Bookmarks["书签1"].SetText("Hello World!");

2.3.4 在书签中插入图片、表格

document.Bookmarks["书签2"].Paragraph.InsertPicture(@"pic.jpg");
document.Bookmarks["书签3"].Paragraph.InsertTableAfterSelf(t);//t是Table类型

2.4 分节符和分页符

2.4.1 分节符

document.InsertSectionPageBreak();//分节符

2.4.2 分页符

  Paragraph p = document.InsertParagraph();
p.InsertPageBreakAfterSelf();//分页符

2.5 添加目录

 1  static void AddToc()
2 {
3 Console.WriteLine("\tAddToc()");
4
5 using (var document = DocX.Create(@"docs\Toc.docx"))
6 {
7 document.InsertTableOfContents("目录", TableOfContentsSwitches.O | TableOfContentsSwitches.U | TableOfContentsSwitches.Z | TableOfContentsSwitches.H, "Heading2");
8 var h1 = document.InsertParagraph("Heading 1");
9 h1.StyleName = "Heading1";
10 document.InsertParagraph("Some very interesting content here");
11 var h2 = document.InsertParagraph("Heading 2");
12 document.InsertSectionPageBreak();
13 h2.StyleName = "Heading1";
14 document.InsertParagraph("Some very interesting content here as well");
15 var h3 = document.InsertParagraph("Heading 2.1");
16 h3.StyleName = "Heading2";
17 document.InsertParagraph("Not so very interesting....");
18
19 document.Save();
20 }
21 }

2.6 插入图片

Image img = document.AddImage(@"pic.jpg");
Picture pic = img.CreatePicture();
Paragraph p1 = document.InsertParagraph();
p1.InsertPicture(pic);

2.7 操作表格

2.7.1 创建和插入表格

Table t = document.AddTable(3, 4);//三行四列

2.7.2 单元格合并

Table t = document.AddTable(3,4);
t.MergeCellsInColumn(0, 0, 1);//public void MergeCellsInColumn(int columnIndex, int startRow, int endRow);竖向合并
t.Rows[0].MergeCells(1, 2);//public void MergeCells(int startIndex, int endIndex);横向合并

注:合并单元格的时候注意,最好先竖向合并,再横向合并,以免报错,因为横向合并会改变列数。

3. 资源

开源网址:http://docx.codeplex.com/(里面的示例代码很适合初学者学习)

高质量博客推荐:http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html#_label3

利用DocX操作word的开源小项目:https://github.com/hahahuahai/create-word-by-DocX

 
 
标签: DocX

开源word操作组件DocX的记录的更多相关文章

  1. 使用开源word操作组件DocX的记录

    1.DocX简介 1.1 简介 DocX是一个在不需要安装word的情况下对word进行操作的开源轻量级.net组件,是由爱尔兰的一个叫Cathal Coffey的博士生开发出来的.DocX使得操作w ...

  2. DocX开源WORD操作组件的学习系列四

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  3. DocX开源WORD操作组件的学习系列三

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  4. DocX开源WORD操作组件的学习系列二

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  5. DocX开源WORD操作组件的学习系列一

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  6. 开源Word读写组件DocX 的深入研究和问题总结

    一. 前言 前两天看到了asxinyu大神的[原创]开源Word读写组件DocX介绍与入门,正好我也有类似的自动生成word文档得需求,于是便仔细的研究了这个DocX. 我也把它融入到我的项目当中并进 ...

  7. 开源Word读写组件DocX介绍与入门

    来源:http://i.cnblogs.com/EditPosts.aspx?opt=1 读写Offic格式的文档,大家多少都有用到,可能方法也很多,组件有很多.这里不去讨论其他方法的优劣,只是向大家 ...

  8. C# 开源组件--Word操作组件DocX

    使用模版生成简历 读写表格数据 合并单元格 工具源代码下载 学习使用 使用模版生成简历 下面将以一个简历实例来讲解DocX对表格的操作,先看看生成的效果 private static void Cre ...

  9. 读写Word的组件DocX介绍与入门

    本文为转载内容: 文章原地址:http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html 开源Word读写组件DocX介绍与入门 阅读 ...

随机推荐

  1. mysql数据类型介绍

    一.int.bigint.smallint 和 tinyint的区别详细介绍 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854 ...

  2. do while 与while的区别!

    #include "stdio.h" main() { ,b=; do{ //在这里do while 是先完成{}里的运算在判断while()里的循环// a=a+b; b++; ...

  3. 约瑟夫问题(Josephus Problem)的两种快速递归算法

    博文链接:http://haoyuanliu.github.io/2016/04/18/Josephus/ 对,我是来骗访问量的!O(∩_∩)O~~ 约瑟夫问题(Josephus Problem)也称 ...

  4. php session_set_save_handler 函数的用法(mysql)(转)

    <?php /*============================文件说明======================================== @filename:     s ...

  5. 一些Linux优化方法

    1. 利用栈做备胎,减少分配空间的几率,IO自己有一份缓存,如果超了就使用stack空间 2. 分散IO:代表readv,可以通过一次系统调用,将内容读到分散的缓存中,可以减少系统的系统调用

  6. iOS---多线程实现方案一 (pthread、NSThread)

    在iOS开发中,多线程是我们在开发中经常使用的一门技术.那么本文章将和大家探讨一下针对于多线程的技术实现.本文主要分为如下几个部分: iOS开发中实现多线程的方式 单线程 pthread NSThre ...

  7. iOS 10 个实用小技巧(总有你不知道的和你会用到的)

    在开发过程中我们总会遇到各种各样的小问题,有些小问题并不是十分容易解决.在此我就总结一下,我在开发中遇到的各种小问题,以及我的解决方法.比较普遍的我就不再提了,这里主要讲一些你可能不知道的(当然,也有 ...

  8. AutoBackupForApps

    This sample demonstrates how to selectively disable Automatic Backups in Android M, either by adjust ...

  9. Python之路,Day22 - 网站用户访问质量分析监测分析项目开发

    Python之路,Day22 - 网站用户访问质量分析监测分析项目开发   做此项目前请先阅读 http://3060674.blog.51cto.com/3050674/1439129  项目实战之 ...

  10. asp.net,mvc4,mysql数据库,Ef遇到问题集合

    asp.net  mvc  mysql数据库,在我一个新手自学MVC4时遇到如下的问题,一一解决掉的方法记录如下方便自己日后查看,也为了方便一些像我一样的新手遇到如下问题时,提供参考 问题一: 解决办 ...