1.前言

请阅读前请看以下这位大神的文章

http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html

另附两个附件

1、DocX.DLL 

2、DocX开源文档(因为原作者非常懒,开发文档才写到V1.0.0.10到,这但是我找了好久才找到的,打开可能会无法显示,鼠标右键,好像有个什么危害之类的选项,并非病毒,你懂的)

DocX原作者是,忘记叫什么名字了,给个连接吧,支持原著 http://docx.codeplex.com/

2、DocX主要长处

DocX组件眼下的最新版本号是V1.0.0.12,主要特点有:

1.支持在文件里插入、删除和替代文本,支持全部的文本格式,如字体,下划线,高亮等。

2.支持插入图片、超链接、表格、页眉页脚以及自己定义属性等。

3.支持类似JQuery的链式写法,非常方便编程开发。

4、不用在server上安装微软的office软件,便能够使用

5、轻量级,读写的速度快,我以前用过aspose、wps开发,没有做过详细測试分析,可是能够感觉出明显速度快非常多

3、DocX缺点

1、功能不够完好,可是算是能满足大众需求了

2、不技能office2003,仅仅支持office2007版本号以上打开,2013打开有些问题

4、我使用的开发环境

1、win7

2、vs2010

5、实现的功能——插入表格数据

今天,我们来讲一下怎样在word中的表格插入数据,这个应该也是相对来比較有用的功能,也算是为上面这位大神补充回善资料吧。

咳咳,我想在这里多说两牢骚话,首先是我实际项目中要用到,依据项目的需求死活没实用到Excel表格,不然我就用NPOI了,然后我是走了非常多弯路,从Aspose组件到wps组件,苦苦折腾了两周,最后放弃了他们,aspose太慢太臃肿,wps偶尔有bug(可能是我技术问题),最后还是经别人推荐用了这个轻量级的DocX组件,以下開始正题。

有经验的程序猿都知道,在表格的数据里,都会涉及到循环遍历,没错,我实现的这个功能也是要用以遍历的。

下面是代码、凝视:(说明一下我这个是在模板的基础上插入数据的)

string path;
stringdocName;
//首先用using把初始化载入模板的代码放到括号中
using (DocXdocx = DocX.Load(docPath)) //
{
//把文档中我做的字符串标记替换成DataTable里面的数据(如“Project_Name”)
docx.ReplaceText("Project_Name",dt.Rows[0]["ProjectName"].ToString());
docx.ReplaceText("Leader_Installer",dt.Rows[0]["Engineer"].ToString());
docx.ReplaceText("Production_Info",dt.Rows[0]["ModuleID"].ToString());
docx.ReplaceText("Project_Duration","暂Y无T");
docx.ReplaceText("Report_Date",DateTime.Now.ToString("yyyy-mm-dd hh:mm:ss"));
docx.ReplaceText("Current_Session",DateTime.Now.ToString("暂Y无T")); //实例化一个DocX中的一个Table类(插入表格数据用)
TablenewTable = docx.Tables[1];//这里取的是模板里的第二表格
//实例化一个DocX中的一个Formatting类(格式化数据用),并加入一些格式,字体为红色
Formattingformating =new Formatting();
formating.FontColor=System.Drawing.Color.Red;
//formating.Spacing = 200;
//循环遍历找到的表格
for(int i = 0; i < dt.Rows.Count; i++)
{
//在第i行中插入字段Name newTable.Rows[i].Cells[0].InsertParagraph(dt.Rows[i]["Name"].ToString(),false, formating);
//在第i行中插入字段TitlenewTable.Rows[i].Cells[1].InsertParagraph(dt.Rows[i]["Title"].ToString(),false, formating);
//在表格后追加一行
newTable.InsertRow();
}
docName= "/" + DateTime.Now.ToString("yyyy-mm-dd")+”Project Daily Report.docx";
path= Folders.GenerateFiles.Project + docName;
path= newWebService().Server.MapPath(path);
//另存为
docx.SaveAs(path);
}

上面是的写法尽管简便,可是有不足之处就是

  1. Formatting类的格式控制不够全,不能控制行高,必须在Row类中才干控制行

经过研究,以下是还有一种写法,相对上面的样例的写法略微复杂一些,可是能更灵活的控制格式,

stringpath;
stringdocName;
using(DocXdocx = DocX.Load(docPath))
{
docx.ReplaceText("Project_Name",dt.Rows[0]["ProjectName"].ToString());
docx.ReplaceText("Leader_Installer",dt.Rows[0]["Engineer"].ToString());
docx.ReplaceText("Production_Info",dt.Rows[0]["ModuleID"].ToString());
docx.ReplaceText("Project_Duration","暂Y无T");
docx.ReplaceText("Report_Date",DateTime.Now.ToString("yyyy-mm-ddhh:mm:ss"));
docx.ReplaceText("Current_Session",DateTime.Now.ToString("暂Y无T")); //Dictionary<string,CustomProperty> lists = docx.CustomProperties;
TablenewTable = docx.Tables[1];
for(inti = 0; i < dt.Rows.Count; i++)
{
//获取第i行
Rowrow = newTable.Rows[i];
//设置第i行的高
row.Height= 30d;
//设置第i行第1列垂直居中
row.Cells[0].VerticalAlignment= VerticalAlignment.Center;
//获取第i行第一个段落,事实上差点儿相同也就是第i行第1列的单元格(段落在这里我也没有理解透,我想段落应该也是单独的一格子吧,相当于单元格中还包裹着一个段落)
Paragraphparagraph = row.Paragraphs[0];
//把数据库字段为Name的数据放到段落中去,然后加上红色
paragraph.Append(dt.Rows[i]["Name"].ToString()).Color(System.Drawing.Color.Red); //以下反复了,同理
row.Cells[1].VerticalAlignment= VerticalAlignment.Center;
Paragraphparagraph1 = row.Paragraphs[1];
paragraph1.Append(dt.Rows[i]["Title"].ToString());
paragraph1.Color(System.Drawing.Color.Red);
newTable.InsertRow();
} docName= "/"+ ProjectDaily Report.docx";
path= newWebService().Server.MapPath(path);
docx.SaveAs(path);
}

在看完代码后,你会发现,我这里省略了Formatting类,由于我发现用不上了,研究良久也没有发现要怎么样才干用上,郁闷中。。。有好方法的同学请指教。完,有什么不正确的地方望大家斧正

开源Office Word——DocX的更多相关文章

  1. Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享

    Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享 在此,先分享下写此文前的经历与感受,我所有的感觉浓缩到一个字,那就是:"坑&qu ...

  2. 老牌开源Office操作组件NPOI现已支持.NET Core

    昨天在微信群里听到老牌Excel开发利器NPOI的作者瞿总说4.6.1版本的NPOI已经支持.NET Standard 2.0了,这也就意味着你可以在.NET Core中使用NPOI了. 作者:依乐祝 ...

  3. 使用ABAP编程实现对微软Office Word文档的操作

    SAP ABAP里提供了一个标准的类CL_DOCX_DOCUMENT,提供了本地以".docx"结尾的微软Office word文档的读和写操作. 本文介绍了ABAP类CL_DOC ...

  4. C#操作Office.word(二)

    在上一篇文章"C#操作Office.word(一)"中我们讲述了如何使用VS2010引用COM中Miscrosoft Word 14.0 Object Library实现创建文档, ...

  5. C#操作Office.word(一)

    该文章主要是讲述如何使用VS2010创建word文档,因为在项目中我们可能需要点击一个按钮把数据库中的项目表单或图片显示到word文档中,因此该文章主要分析如何使用VS2010创建word文档并填写相 ...

  6. 解决 apache poi 转换 word(docx) 文件到 html 文件表格没边框的问题

    一.起因 这几天在做电子签章问题,要通过替换docx文件中的占位符生成包含业务数据的合同数据,再转换成html文件,转换成pdf文件.遇到的问题是:通过apache poi转换docx到html时,原 ...

  7. XWPFDocument创建和读取Office Word文档基础篇(一)

    注:有不正确的地方还望大神能够指出,抱拳了 老铁!   参考API:http://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFDo ...

  8. 打开word文档时提示“Microsoft Office Word已停止工作”

    我的电脑(Win10)有Office 2003和2013两个版本,可能由于之前超长待机等原因导致word 2003的文件(.doc)不能正常打开,没次都会提示“Microsoft Office Wor ...

  9. java 使用 POI 操作 XWPFDocumen 创建和读取 Office Word 文档基础篇

    注:有不正确的地方还望大神能够指出,抱拳了 老铁! 参考 API:http://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFDoc ...

随机推荐

  1. c friend -- 友元

    c friend -- 友元 友元用于突破protected 或者 private 保护的限制,首先要做的是在被访问者的类中声明是友元函数或者友元类.代码如下 #include <iostrea ...

  2. 改动已有gpg密钥的用户标识及凝视

    /*********************************************************************  * Author  : Samson  * Date   ...

  3. JavaScript—DOM操作

  4. Mysql自增主键ID重新排序方法详解

    Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name` DROP `id`; 2 ...

  5. linux log系统图

    log系统图 先贴图,怎么样,效果还不错吧,根据个人理解画的,如果不行将就用着吧.   解说 syslog是一种机制,在wiki中说这种机制可以使用udp,tcp,unix socket等把日志记录在 ...

  6. 模板的Traits

    Traits含义就是特性,应用Trait模板参数,使得我们的程序既保持灵活性,同时减少类型参数的数量.能够使得我们对函数进行更加细粒度的控制. #ifndef TRAIT_H_ #define TRA ...

  7. Hbase集群环境搭建

    Hbase数据库依赖 Hadoop和zookeeper,所以,安装Hbase之前,需要先把zookeeper集群搭建好.(当然,Hbase有内建的zookeeper,不过不建议使用).Hbase配置上 ...

  8. perl 访问网站一些useragent的设置

    121.40.205.143 - - [22/Jun/2016:12:56:23 +0800] "GET /wechat/account.html HTTP/1.1" 200 34 ...

  9. 算法起步之Dijkstra算法

    原文:算法起步之Dijkstra算法 友情提示:转载请注明出处[作者 idlear    博客:http://blog.csdn.net/idlear/article/details/19687579 ...

  10. JSON-C 的安装与使用

    下载源代码安装步骤 wget http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz tar xvf json-c-0.9.tar.gz cd jso ...