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的)

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

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

  1. aspose 生成word 简单的文档操作

    package aspose.com.word; import com.aspose.words.Document;import com.aspose.words.DocumentBuilder; p ...

  2. [.NET] 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc

    开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc [博主]反骨仔 [原文地址]http://www.cnblogs.com/li ...

  3. 开源word操作组件DocX的记录

    开源word操作组件DocX的记录 使用开源word操作组件DocX的记录 1.DocX简介 1.1 简介 DocX是一个在不需要安装word的情况下对word进行操作的开源轻量级.net组件,是由爱 ...

  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. DocX开源WORD操作组件的学习系列二

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

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

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

  8. WORD操作的问题

    最近有个小项目主要是对文档,特别是WORD的操作,读取表格数据存到数据库: 再把数据库的数据读出来写入WORD,下载下来,诸如此类的东西,说来很是简单. 想了想是用什么开发呢? C#常用的,没话说,也 ...

  9. Aspose.Cells相应操作及下载

    Aspose.Cells相应操作 1,上传 1.1 Workbook Workbook workBook = new Workbook(); 属性: 名称 值类型 说明 Colors Color[] ...

随机推荐

  1. CodeForces 478B 第六周比赛B题

    B - B Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u   Descriptio ...

  2. 《30天自制操作系统》读书笔记(3) 引入C语言

    这一次的学习相当曲折, 主要是因为粗心, Makefile里面的错误导致了文件生成出现各种奇奇怪怪的问题, 弄得心力交瘁, 因此制作过程还是尽量按着作者的路子来吧. 作者提供的源码的注释在中文系统下是 ...

  3. 转:postgresql:pg_restore: [archiver] input file does not appear to be a valid archive的解决方法

      使用ps_restore恢复备份数据库出错:pg_restore: [archiver] input file does not appear to be a valid archive 使用pg ...

  4. segv & mini coredump

    1. mini coredump    a. segv      http://zh.scribd.com/doc/3726406/Crash-N-Burn-Writing-Linux-applica ...

  5. 科通芯城:用B2C的方式做B2B

    上线两年,科通芯城的年收入有望突破50亿,一个传统分销商用2c的方式做b2b,也能进行自我革命. 文 | 王海天 这个网站的名字叫科通芯城,于2011年下半年在深圳正式上线,卖的商品是IC元器件,包括 ...

  6. -_-#【Angular】自定义指令directive

    AngularJS学习笔记 <!DOCTYPE html> <html ng-app="Demo"> <head> <meta chars ...

  7. [GDKOI2016]小学生数学题

    记 $F(n)=\sum\limits_{i=1}^{n}i^{-1}$ $G(n)=\sum\limits_{i=1,i\neq jp}^{n}i^{-1}$ 我们要算$F(n)\%p^k$ 那么 ...

  8. 【动态规划】XMU 1028 Game Boy Advance

    题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1028 题目大意: 求01背包最优解的方案.物件数和物件编号. 题目思路: [动态规划] ...

  9. ubuntu下QT输出程序控制台界面难看的解决方法

    这几天在ubuntu下装了QT5,但输出程序界面后,简直无法入目 于是,随便乱找后,终于找到解决方法 打开选项 在终端那行改下就行

  10. 基于用户映射的CAS单点登录系统设计与实现

    http://wenku.baidu.com/link?url=wAZR9AMkAAcOt5J_SfroXqU5IM5RhNWaP0-YUwvZT94761Qq1-7pKAt6ngOX1zG4tYec ...