关于Aspose对于Word操作的一些扩展及思考

Aspose.word

Aspose.Words是一款先进的类库,通过它可以直接在各个应用程序中执行各种文档处理任务。Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument, PDF, XPS, EPUB和其他格式。使用Aspose.Words,您可以生成,更改,转换,渲染和打印文档而不使用Microsoft Word。

上面一句话换而言之是他解决了IIS针对Microsoft Word Application的各种权限不足问题。当然,这里主要不是和他家哈牛B说Aspose怎么用,在这里主要和大家讨论的是Aspose我们怎样对他进行一些扩展让他更适合你的项目。

1、将一些对象的动态方法进行静态化

这里说的动态方法是什么呢,比方说打开构建Document对象,DocumentBuilder对象等,在Aspose集成时可能他们的编程习惯与我们团队里的不一样,那么可以通过一些方式让整个编码风格统一起来。

比如:

        /// <summary>
        /// 使用操作者
        /// </summary>
        /// <param name="oWordApplic"></param>
        /// <param name="oDoc"></param>
    public static DocumentBuilder Builder(this  Aspose.Words.Document oDoc)
        {
            return new DocumentBuilder(oDoc);          }

  这样程序中调用写法就改为: DocumentBuilder builder=Doc.Builder();

2、将一些经常出现或者反应习惯进行集成,静态化处理。

比如说我们这里面插入文字,如果按照Aspose提供的,那么我们可能需要做的是:

            oWordApplic.Bold = conBold;
            oWordApplic.Font.Size = conSize;
            oWordApplic.ParagraphFormat.Alignment = ParagraphAlignment.Left;
            oWordApplic.Write(strText);

  但是我们可以看到,一般操作不需要黑体,字体大小也比较固定,基本上都是靠左对齐,那么我们可以进行一些集成,然后我们按照变动优先级进行默认参数排序(通常认为改动字体可能行最大、其次是是否黑体,对齐方式变动可能性最小)

        /// <summary>
        /// 添加内容
        /// </summary>
        /// <param name="strText"></param>
        public static void WriteText(this DocumentBuilder oWordApplic, string strText, double conSize = 24, bool conBold = false
                 , ParagraphAlignment conAlign = ParagraphAlignment.Left)
        {
            oWordApplic.Bold = conBold;
            oWordApplic.Font.Size = conSize;
            switch (conAlign)
            {
                case ParagraphAlignment.Left:
                    oWordApplic.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    break;
                case ParagraphAlignment.Center:
                    oWordApplic.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                    break;
                case ParagraphAlignment.Right:
                    oWordApplic.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                    break;
                default:
                    oWordApplic.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    break;
            }
            oWordApplic.Write(strText);
        }

  那么我们在插入文字时oWordApplic.WriteText(strText);即可~

3、善于将其他的类库与操作类库集成

这里有一个例子,我们经常要将个DataSet里面的数据插入到word的行里面去,我们可以根据DataSet的数据结构特点与Word的表格结构特点类似

我们第一步做的是做一个DataRow,Dictionary,Aspose.Words.Node相互映射并且进行区域行的文字替换。

        // 根据字典替换
        public static void ReplaceText(this Aspose.Words.Node node, Dictionary<string,string> _ReplaceDic,System.Data.DataRow dr)
        {
            //System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(oleText);
            foreach (System.Data.DataColumn dc in dr.Table.Columns)
            {
                if (_ReplaceDic.Keys.Contains(dc.ColumnName))
                {
                    node.Range.Replace(_ReplaceDic[dc.ColumnName], dr[dc].ToString(), false, false);
                }
                else
                {
                    node.Range.Replace(dc.ColumnName, dr[dc].ToString(), false, false);
                }
            }
        }

    然后再根据DataTable对word表格进行行控制:

        //表格增加新行
        public static Row InsertTableRow(this Table table)
        {

            // Retrieve the first table in the document.
            // Clone the last row in the table.
            Row clonedRow = (Row)table.LastRow.Clone(true);

            // Remove all content from the cloned row‘s cells. This makes the row ready for
            // new content to be inserted into.
            foreach (Cell cell in clonedRow.Cells)
                cell.RemoveAllChildren();
            // Add the row to the end of the table.
            table.AppendChild(clonedRow);
            return clonedRow;
        }

  这样就会完全遵循了我们所谓的Word替换规则,并且还不会影响word行的样式甚至一些自定义的文字。

4、尝试将代码、类库进行模型化与具现化。

这里讲述的不是代码的一些写法了,而是对待类库的一种理解方式。

Aspose对象首先我们要看他的数据用例

1、Aspose对象关系与Word对象关系肯定是一致的。

2、理解word的文档节点与Aspose中的Node节点的对应关系(文字、图形、书签、表格等)

3、基本上所有的Aspose操作都能找到对应的Word操作(操作一致性,从操作word方向来理解Aspose的)

言而总之、总而言之,反正就这样了

时间: 2024-10-03 09:26:26

关于Aspose对于Word操作的一些扩展及思考的相关文章

WORD操作的问题

最近有个小项目主要是对文档,特别是WORD的操作,读取表格数据存到数据库: 再把数据库的数据读出来写入WORD,下载下来,诸如此类的东西,说来很是简单. 想了想是用什么开发呢? C#常用的,没话说,也方便,可是还想用LINUX服务器(CENTOS)这个对我来说是个新东西, C#APSNET 这个可以用JEXUS+MONO 没有问题 DATABASE  SQLSERVER是不行了,那就MYSQL吧,也没有问题 WORD操作怎么办? 直接在JEXUS群里有了答案 NPOI. 理论上来讲第一个方案出来

开源word操作组件DocX的记录

开源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下载获取,也可以直接利用Nu

多线程中简单的++操作,所引发的思考

一句简单的g_nLoginCount++操作,转换成汇编语言就成了上面的三句话,假如现在我们有两个线程,当第一个线程执行到第二个汇编时,此时第二个线程启动,他又从内存中读取g_nLoginCount,但这时第一个线程已经将g_nLoginCount做了加法操作,只是没有将其移回内存,这样的话这个加法操作形同虚设,这样计算的结果是不可预知的!!!! 多线程中简单的++操作,所引发的思考

Aspose.Word控件实现word操作

关于Aspose.Word控件的介绍,请戳→ http://www.cnblogs.com/asxinyu/p/3242754.html 首先需要去下载这个dll文件,然后引用到你的项目当中.地址→http://download.csdn.net/detail/wo_shi_chuan_qi_007/7332127 利用书签把数据写入到Word当中 文本和图片 第一步,你先要去准备Word模板(新建一个Word然后复制到项目中) 第二步,在Word模板中插入书签 在word中准备你需要把数据填写

【小丸类库系列】Word操作类

1 using Microsoft.Office.Interop.Word; 2 using System; 3 using System.Collections.Generic; 4 using System.Drawing; 5 using System.IO; 6 using System.Linq; 7 using System.Reflection; 8 using System.Text.RegularExpressions; 9 10 namespace OtaReportTool

c# word 操作

1 public class WordOperate 2 { 3 4 #region 新建Word文档 5 /// <summary> 6 /// 动态生成Word文档并填充内容 7 /// </summary> 8 /// <param name="dir">文档目录</param> 9 /// <param name="fileName">文档名</param> 10 /// <ret

word操作(转)

C# Office操作 2012-02-15 23:32:11|  分类: 电脑编程|举报|字号 订阅 1.新建Word文档 CreateWordFile新建Word文档#region 新建Word文档/**//// <summary>/// 动态生成Word文档并填充内容 /// </summary>/// <param name="dir">文档目录</param>/// <param name="fileName&q

转载:C# Word操作实现代码

转载自:http://www.jb51.net/article/17770.htm 在VS2008平台下,引用.net-Microsoft.Office.Interop.Word.12,这样就可以在程序用操作WORD对象了. 通过简单执行,报了80070005错误,这个错误是因为权限不够,需要在DCOM配置中更改.net和IIS用户的操作权限,具体修改过程如下: 解决方法一: 1.控制面板->管理工具->组件服务->计算机->我的电脑->DCom配置->找到Micros

Util应用程序框架公共操作类(三):数据类型转换公共操作类(扩展篇)

上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化. 下面以字符串转换为List<Guid>为例进行讨论. string input = "83B0233C-A24F-49FD-8083-1337209EBC9A,EAB523C6-2FE7-47BE-89D5-C6D440C3033A"; var result = Util.Conv.ToGuidList( input ); 观察上面