zoukankan      html  css  js  c++  java
  • 读写Word的组件DocX介绍与入门

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

           本博客全部文章分类的总文件夹:http://www.cnblogs.com/asxinyu/p/4288836.html

    本博客其它.NET开源项目文章文件夹:http://www.cnblogs.com/asxinyu/p/4329755.html

    1.前言

      读写Offic格式的文档,大家多少都实用到,可能方法也非常多,组件有非常多。

    这里不去讨论其它方法的优劣,仅仅是向大家介绍一款开源的读写word文档的组件。读写ExcelNPOI,读写Word。那看看DocX吧。

    DocX是一个以很直观简单的方式操作Word 2007/2010文件的轻量级.NET组件。

    它的速度很快。并且不须要安装微软的Office软件。

    在中国,免费并且小巧的WPS有足够的理由让许多用户放弃庞大的Office,那在实际软件开发过程中,这玩意就实用处了。遗憾是不支持2003,但总归是被淘汰的趋势,并且用WPS,也没有啥版本号的差别。

    2.DocX的主要特点

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

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

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

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

    3.DocX入门样例

     DocX中一个Word文档的主要对象有段落(Paragraph)、图像(Image)、表格(Table)、自己定义属性(CustomProperty)。

    关于具体的使用和API接口,能够參考CHM文档。没有自己制作最新版的,我用的是上一个版本号,基本使用够了。有精力的能够自己去看源代码,自己制作一份。注意,无特殊注明,本文的绝大部分代码都来自V1.0.0.10版本号的帮助文档。新的11和12版本号好像没有添加大的新功能,仅仅是改动不少Bug,以及添加了案例和单元測试,至于没有介绍到的,能够自己去翻文档,大家能够去开源站点下载最新源代码。

     3.1 新建与载入Doc文档 

    新建和载入Word文档的方法都在Docx类中,操作也非常easy,例如以下所看到的: 

    复制代码
    1 //新建一个Word文档。载入Load的方法和Create使用一样。
    2 using (DocX document = DocX.Create(@"..Test.docx"))
    3 {
    4     //加入一些基本对象。如段落等
    5     document.Save();//保存
    6 }
    复制代码

     3.2 加入段落及控制格式

     文本段落和格式控制是Word文档的最经常使用对象,DocX支持插入段落以及对段落格式进行非常全面的控制。以下一一举例。

    插入段落的方法是DocX类的InsertParagraph方法,该方法有好几种用法。不仅能够控制插入的位置。还能够控制格式。 

    复制代码
     1 using (DocX document = DocX.Create(@"Test.docx"))
     2 {
     3     //首先创建1个格式对象
     4     Formatting formatting = new Formatting();
     5     formatting.Bold = true;
     6     formatting.FontColor = Color.Red;
     7     formatting.Size = 30;
     8      //控制段落插入的位置
     9     int index = document.Text.Length / 2;
    10     //将文本插入到指定位置。并控制格式
    11     document.InsertParagraph(index, "New text", false, formatting);
    12     document.Save();//保存文档
    13 }
    复制代码

     注意。上面仅仅是插入段落。也能够单独定义1个段落对象Paragraph,然后在这个段落中插入表格,图像,以及操作自己定义属性。如以下的样例,当中比較具体介绍的对图像的操作:

    复制代码
     1 using (DocX document = DocX.Create(@"Test.docx"))
     2 {
     3     //给文档新建1个段落对象
     4     Paragraph p = document.InsertParagraph("Here is Picture 1", false);
     5     //给文档加入1个图像
     6     Novacode.Image img = document.AddImage(@"Image.jpg");
     7     //将图像插入到段落后面
     8     Picture pic = p.InsertPicture(img.Id, "Photo 31415", "A pie I baked.");
     9     //选择图像,并改动图像尺寸
    10     pic.Rotation = 30;    
    11     pic.Width = 400;
    12     pic.Height = 300;
    13     //设置图片形状,并水平翻转图片
    14     pic.SetPictureShape(BasicShapes.cube);
    15     pic.FlipHorizontal = true;    
    16     document.Save();//保存文档
    17 }
    复制代码

    格式控制Formatting类所有是属性。没有方法。有非常多控制格式的属性,直接进行设置就能够了。临时没有发现这个版本号支持样式,所以仅仅能定义1个全局格式来控制标题了。详细的格式控制能够去看该类的文档。

    太多,不一一列举,基本使用上面的代码就能够说明了。

    另外新版本号已经支持了添加超链接(Hyperlink)功能,使用非常easy,DocX的AddHyperlink方法直接完毕。

    3.3 插入图像及图像控制

    上面的样例事实上已经介绍了几种插入图片的方式。一种是在DocX对象中直接AddImage,另外就是在段落中插入。

    当中3.2的样例已经非常具体介绍了图像的控制,比方改动尺寸,旋转等。更具体的设置在Picture类中。

    3.4 插入表格及表格控制

    表格是Word文档另外一个重点。在实际使用环境中,也是比例非常高的一个。先介绍下DocX中表格对象的结构:

    1个表格对象Table有行。列组成。行列能够通过索引訪问。Table对象的基本单一是单元格(Cell),每个Row对象由多个Cell对象组成。Cell对象有一个默认的Paragraph对象。这样能够对这个Paragraph对象进行格式控制。从而控制单元格的格式。表格还能够设置相关属性,对齐,是否自适应表格大小等。Table对象的操作也非常灵活,能够插入和移除行,相同也能够插入和移除列。

    DocX对象插入表格也有几种方式,能够直接用DocX对象的InsertTable方法,也能够在段落对象后面插入。同理也能够在Table对象前后插入段落对象。这与排版有关了。看1个综合的样例吧:

    3.5 页眉页脚控制

    页面和页脚的使用很类似。

    支持三种类型,首页。奇数页和偶数页。

    貌似还没有支持节。这里仅仅列举页脚的基本使用。

    复制代码
     1 using (DocX document = DocX.Create(@"Test.docx")) 
     2 {
     3     document.AddFooters();//加入全部的页脚
     4     Footers footers = document.Footers; //获取该文档全部的页脚
     5     //获取文档第一页的页脚
     6     Footer first = footers.first; 
     7     //获取奇数页的页脚
     8     Footer odd = footers.odd; 
     9     //获取偶数页的页脚
    10     even = footers.even; 
    11     //设置不同页使用不同的页脚
    12     document.DifferentFirstPage = true; 
    13     document.DifferentOddAndEvenPages = true; 
    14     //设置页脚的内容
    15     Paragraph p = first.InsertParagraph();
    16     p.Append("This is the first pages footer.");    
    17     document.Save(); //记得保存
    18 }
    复制代码

    3.6 自己定义属性支持

    尽管还没实用DocX投入实际使用,但个人觉得对自己定义属性的支持是最强大的1个功能。不仅能够自己制作模版,还能够直接在DocX中新增自己定义属性。这样在导出大批量同样的格式的文档时就非常实用。比方打印成绩单,报表等等。因为本人从没有使用Word 2007及以上版本号。全部也从没有接触过这个自己定义属性功能。我的理解,类似一个“占位标”或”文本控件”,然后在开发的时候。能够给这些位置填充值,以批量生成一些文件。以下仅仅简单的介绍一个直接加入自己定义属性,并赋值的样例。高级一点的话,能够自己更加仔细的排版,这样就美观点。

    复制代码
     1 using (DocX document = DocX.Load(@"C:ExampleTest.docx"))
     2 {
     3     //先定义一个自己定义属性
     4     CustomProperty forename;
     5     //先推断文档中是否存在该名称的自己定义属性
     6     if (!document.CustomProperties.ContainsKey("forename"))
     7     {    //不存在则创建一个。并给其赋值"Cathal"
     8         document.AddCustomProperty(new CustomProperty("forename", "Cathal"));
     9     }
    10     //获取这个自己定义属性,并打印出它的值
    11     forename = document.CustomProperties["forename"];
    12     Console.WriteLine(string.Format("Name: '{0}', Value: '{1}'
    Press any key...", 
    13                         forename.Name, forename.Value));
    14     document.Save();
    15 }
    复制代码

    4.资源

    开源网址:http://docx.codeplex.com/

    对你有帮助,不要吝啬鼠标哦。

  • 相关阅读:
    事件(三):事件对象
    事件(二):事件处理程序
    事件(一):事件流
    nginx里面的rewrite配置
    详解 CSS 居中布局技巧
    jQuery 效率提升建议
    web的攻击技术
    前端优化点总结
    深入理解递归和闭包
    创建对象
  • 原文地址:https://www.cnblogs.com/llguanli/p/8474350.html
Copyright © 2011-2022 走看看