博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
aspose.word 使用简单方法
阅读量:5285 次
发布时间:2019-06-14

本文共 1852 字,大约阅读时间需要 6 分钟。

 

概念介绍

使用aspose生成word报表步骤:

  1. 加载word模板
  2. 提供数据源
  3. 填充

加载模板

提供了4种重载方法

1
2
3
4
5
public 
Document();
public 
Document(Stream stream);
public 
Document(
string 
fileName);
public 
Document(Stream stream, LoadOptions loadOptions);
public 
Document(
string 
fileName, LoadOptions loadOptions);

模板制作

aspose在word模板中使用了域(MergeField),一个域相当于一个占位符。域,可以从菜单  插入->文档部件中定位选择。

数据填充

目前有两种情况:基本信息和列表。

基本信息:基本属性,列表对应循环的数据结构,如DataTable.

对于列表,使用DataTable进行填充。

模板的制作:

表格以关键字TableStart开头,TableEnd结束。关键字后加DataTable表名称。e.g.TableStart:tableName

表头中间,是具体字段的名称。

 序号 姓名 性别 年龄
 <TableStart:Name><<Index>>  <<Name>>  <<Sex>> <<Age>><<TableEnd:Name>>
Document doc = new Document(Server.MapPath("~\\templet") + "\\" + name);doc.MailMerge.ExecuteWithRegions(DataTable)

 具体字段

有两种方式可以实现:

方法一、

1
2
3
DocumentBuilder builder = 
new 
DocumentBuilder(doc);
builder.MoveToMergeField(MergeFiled Name);
builder.Write(value;

这种方式,一次填充一个数据。但一个域字段可以多次使用,并可以一次填充。

优点,可以灵活定制。如果要想一次替换多个域字段,稍加改动同样可以实现。

DocumentBuilder builder = new DocumentBuilder(doc);while(builder.MoveToMergeField(MergeFiled Name)){    builder.Write(value;}

方法二、

doc.MailMerge.Execute(fieldNames, fieldValues);

在具体开发过程中,通常选择Entity作为数据源。可通过反射获取数据。

如何获取域字段

1
doc.MailMerge.GetFieldNames()

方法返回的书string[]

 

方法三、

 根据属性域添加特殊符号代码如下

        1.找到属性域位置:

         builder.MoveToMergeField(item.Key);

       2.设置属性域格式

       builder.ParagraphFormat.StyleIdentifier =Aspose.Words.StyleIdentifier.BodyText;

 
                                builder.Font.Name = "Wingdings 2";
                                builder.Font.Size = 8;
                                builder.Font.Italic = true;
                                builder.Write("R");

 操作方法:

来自:Office之家

链接:http://office.jb51.net/word/5200.html

来自:Office之家

链接:http://office.jb51.net/word/5200.html

 在单元格中输入字母 R,然后把字体设置成 wingdings 2类型即可,如下图所示关于字母与符号的对应表。

 0是复选框

 

 

来自:Office之家

链接:http://office.jb51.net/word/5200.htm

可参考:  http://www.cnblogs.com/lucika/p/3519275.html

     http://www.cnblogs.com/birchlee/archive/2013/05/23/3094632.html

转载于:https://www.cnblogs.com/louby/p/6456021.html

你可能感兴趣的文章
C++11并发——多线程std::mutex (二)
查看>>
vue router
查看>>
第三次实训作业
查看>>
git
查看>>
FastClick 导致聚焦有问题
查看>>
第二百三十八节,Bootstrap输入框和导航组件
查看>>
js重写原型对象
查看>>
$this的用法
查看>>
linux如何安装java环境
查看>>
Android中gravity的含义
查看>>
求大神给解决下,向已有的xml文件写入数据,但不覆盖文件存在的内容
查看>>
深入理解java嵌套类和内部类
查看>>
Linux守护进程的编程实现
查看>>
C语言指针的初始化和赋值
查看>>
JavaScript 输出
查看>>
python 函数(2)
查看>>
Python学习笔记1:python简介、输入输出、循环条件
查看>>
python学习笔记5:装饰器
查看>>
Android 开发环境配置
查看>>
skiing
查看>>