DocX操作word生成报表
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
参考:http://www.cnblogs.com/huahai/p/DocX.html
DocX操作word生成报表的更多相关文章
- Aspose.Words操作word生成PDF文档
Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...
- VBA操作word生成sql语句
项目开始一般都是用word保存下数据库的文档 但是从表单一个一个的建表实在是很困难乏味,查查资料 1.可以生成一个html或者xml,检索结构生成sql.但是这个方式也蛮麻烦 2.查到vba可以操作w ...
- C#中使用Spire.docx操作Word文档
使用docx一段时间之后,一些地方还是不方便,然后就尝试寻找一种更加简便的方法. 之前有尝试过使用Npoi操作word表格,但是太烦人了,随后放弃,然后发现免费版本的spire不错,并且在莫种程度上比 ...
- C#使用Docx操作word文档
C#使用Docx编写word表格 最近接手了一个小Demo,要求使用Docx,将Xml文件中的数据转换为word文档,组织数据形成表格. 写了已经一周,网络上的知识太零碎,就想自己先统计整理出来,方便 ...
- [转载]java操作word生成水印
应用场景 为了保护版权或辨别文件的真伪,有时需要在生成的Word文件中动态添加水印,PageOffice组件的WaterMark类就封装了给在线编辑的Word文件添加水印这一功能,调用接口非常简单. ...
- [原创]java操作word生成水印
应用场景 为了保护版权或辨别文件的真伪,有时需要在生成的Word文件中动态添加水印,PageOffice组件的WaterMark类就封装了给在线编辑的Word文件添加水印这一功能,调用接口非常简单. ...
- C#操作Word生成目录
OperateWord ow = new OperateWord(); Microsoft.Office.Interop.Word.ApplicationClass ss = ow.WordAppli ...
- c# 操作Word总结(车)
在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想到网页的信息创建到一个word文本中,在显示的时,可以在线打开 ...
- c# 操作Word总结【转】
http://www.cnblogs.com/eye-like/p/4121219.html 在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很 ...
随机推荐
- January 30 2017 Week 5 Monday
I can accept defeat but could not accept to give up. 我可以接受失败,但不能接受放弃. Fortune has not always smiled ...
- 【pbrt】在c++程序中使用pbrt进行渲染
近段时间做一个关于水面的动画.由于我用c++实现水面动画的,然而使用c++我自己的渲染系统渲染结果被同学说是可视化不叫渲染,所以我决定修改一下…… 恰好进来在学习pbrt,所以索性就蛋疼了考虑直接用p ...
- define常量
看手册说define定义的常量只允许: 仅允许标量和 null.标量的类型是 integer, float,string 或者 boolean. 也能够定义常量值的类型为 resource ,但并不推 ...
- Android进阶笔记16:onInterceptTouchEvent、onTouchEvent与onTouch
1. onTouch方法:onTouch方法是View的 OnTouchListener借口中定义的方法,处理View及其子类被touch是的事件处理.当一个View绑定了OnTouchLister后 ...
- 显卡 GPU 关系
https://zhidao.baidu.com/question/1238935513507031339.htmlGraphic Processing Unit,意思就是图形处理器啊,显卡的由GPU ...
- 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...
- Linux学习总结(四)-两种模式修复系统,单用户,救援模式
一单用户模式 我们举例,比如忘记root 用户密码我们就可以进入单用户模式重置,该单用户模式,类似windos 安全模式开机界面快速按e 进入grub光标定位到 linux16 下一行ro crash ...
- 一款css3的标签动画效果
/*响应式设计,动画效果需引入animate.min.css库*/ <div class="index_tag"> <div class="rowFlu ...
- Jmeter--HTTPS请求
(1)新建threadGroup: (2)设置并发用户数量: (3) ...
- 为类型“xxxx”多次调用了 Map,且其中至少有一个调用未指定目标表名称。
ef的继承映射真的是能搞死人啊...小结一下: 下图中的代码,ResponseTextMessage.ResponseNewsMessage.ResponseMethodMessage等几个类都是Re ...