记Aspose.Word的使用中出现的问题
最近实现一个功能,具体需求就是把数据库中的内容转换成word文档,文档中需要包含标题、目录以及表格信息。
这里我使用的是Aspose.Word类,这是一个很强大的文档操作工具包,实现了所有操作文档的所需要的功能。
我使用中遇到了几个问题,最棘手的就是当生成word时如果数据量太大,执行一段时间后,会报一个错,而当数据量不是很大时,就不会报错。具体报错如下:
1 java.lang.RuntimeException: java.lang.IllegalStateException: There are too many styles in the document.
2 at com.aspose.words.StyleCollection.zzZ(Unknown Source)
3 at com.aspose.words.NodeImporter.zzZ(Unknown Source)
4 at com.aspose.words.NodeImporter.zzZ(Unknown Source)
5 at com.aspose.words.NodeImporter.zzY(Unknown Source)
6 at com.aspose.words.NodeImporter.zzZ(Unknown Source)
7 at com.aspose.words.NodeImporter.zzY(Unknown Source)
8 at com.aspose.words.NodeImporter.zzZ(Unknown Source)
9 at com.aspose.words.NodeImporter.zzY(Unknown Source)
10 at com.aspose.words.NodeImporter.zzZ(Unknown Source)
11 at com.aspose.words.NodeImporter.zzY(Unknown Source)
12 at com.aspose.words.NodeImporter.zzZ(Unknown Source)
13 at com.aspose.words.NodeImporter.importNode(Unknown Source)
14 at com.epoint.datacenter.controller.exportToWord.ResourcesToWord.drawTabel(ResourcesToWord.java:121)
15 at com.epoint.datacenter.controller.exportToWord.ResourcesToWord.exportToWord(ResourcesToWord.java:93)
16 at com.epoint.datacenter.Test.ExportWord.main(ExportWord.java:10)
17 Caused by: java.lang.IllegalStateException: There are too many styles in the document.
18 at com.aspose.words.StyleCollection.zzZlI(Unknown Source)
19 at com.aspose.words.StyleCollection.zzY(Unknown Source)
20 at com.aspose.words.StyleCollection.zzZ(Unknown Source)
21 ... 14 more
字面意思就是文档中有太多的格式或类型了,但是光看字面意思完全不知道什么意思。无奈进行了百度,可悲的是百度也没有找到类似的问题。
一般定位到报错代码行,然后分析前面的代码,基本都能找到问题。报错位置如下:
NodeImporter importer = new NodeImporter(srcdoc, doc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
for (Node node : (Iterable<Node>) nodes) {
Node importNode = importer.importNode(node, true);
doc.getFirstSection().getBody().appendChild(importNode);
}
其实for循环是没有问题的,因为程序能执行几分钟。往上找就看到了NodeImporter的定义,这里面定义了导入节点的样式,KEEP_SOURCE_FORMATTING表示把引用到的样式全部导入到母页面,我就怀疑是不是样式太多是因为这个引用的样式过多,于是换成了USE_DESTINATION_STYLES,使用母页面的样式,尝试后问题竟然解决了。当然这个问题不是很难,但是Aspoe.Word这个工具包也是第一次用,不熟悉里面的内容,这里做下记录。
记Aspose.Word的使用中出现的问题的更多相关文章
- 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...
- Aspose Word模板使用总结
Aspose Word模板使用总结 1.创建word模版,使用MergeFeild绑定数据 新建一个Word文档,命名为Template.doc 注意:这里并不是输入"< ...
- 利用Aspose.Word控件实现Word文档的操作
Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般 ...
- 黄聪:利用Aspose.Word控件实现Word文档的操作(转)
撰写人:伍华聪 http://www.iqidi.com Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及 ...
- 关于ASPOSE.WORD使用上的一个小问题
最近实习期间负责了公司某个项目的一个功能模块里面的word导出功能,使用的是ASPOSE.WORD类库,但是经常导出时候会遇到图中的问题,大概意思就是两个表格不能跨在一起,调试了好几次还是没发现具体的 ...
- Aspose.Word邮件合并之自定义数据源
Aspose.Word在进行邮件合并时,默认的几个重载方法对Database支持比较友好,但是也可以通过自定义数据源来实现从集合或者对象中返回数据进行邮件合并. 自定义数据源主要是通过实现IMailM ...
- Aspose Word.Dll库自带的bug导致The document appears to be corrupted and cannot be loaded 问题处理。
问题的详细描述: C#在开发过程中使用Aspose.word.dll库去实现word套打功能.但是,最近客户反映出现了一个问题,在打印文档的时候,系统报错.经过定位分析发现是Aspose.word.d ...
- aspose.word 使用简单方法
aspose.word使用简单方法 概念介绍 使用aspose生成word报表步骤: 加载word模板 提供数据源 填充 加载模板 提供了4种重载方法 1 2 3 4 5 public Documen ...
- aspose.word 读取word段落内容
注:转载请标明文章原始出处及作者信息 aspose.word 插件下载 链接: http://pan.baidu.com/s/1qXIgOXY 密码: wsj2 使用原因:无需安装office,无兼容 ...
随机推荐
- Java 给Word添加数字签名
本文以Java程序代码为例,介绍如何给Word文档添加数字签名. 程序运行环境 IntedliJ IDEA JDK 1.8.0 Jar包:spire.doc.jar 4.5.1 Word文档:.doc ...
- centos 7.6 安装最新版docker 19.03
systemctl stop docker rpm -qa | grep docker 看到那个删除那个yum erase docker \ docker-client \ docker-client ...
- 关于Annotation注解的理解
在编Java程序的时候,我们经常会碰到annotation.比如:@Override 我们在子类继承父类的时候,会经常用到这个annotation.它告诉编译器这个方法是override父类的方法的. ...
- docker-compose如何动态配置springboot项目的application.yml的配置
假如我们再springboot的工程中有配置文件 方式1: application.properties里面存在环境变量: #配置数据库链接 spring.datasource.url = jdbc: ...
- 利用Typora+PicGo+OSS+Git+Github/码云搭建个人云笔记
搭建个人云笔记 对于程序员来讲,使用markdown可以帮助我们快速地写作,书写出排版好看,颜值高的笔记,使用markdown来书写文档相比于使用word要简单快捷的多 市面上有很多markdown的 ...
- oracle 碎片管理和数据文件resize释放表空间和磁盘空间(以及sys.wri$_optstat_histgrm_history过大处理)
随着互联网的快速发展,各行各业的数据量也是与日俱增,而数据库的数据量也是直线增长,但是,如果表DML太多,则可能会在高水位线以下出现太多空白. 因此,只能将数据文件缩小到高水位线,因为高水位线以下有一 ...
- 登陆框select绕过
0x00 原理 思路来自美团杯2021,本来说出题人已经把select通过正则过滤了,就不该总是往用select进行查询那方面想-> select id from users where u ...
- VMware vCenter重置web console SSO登录密码
On a Windows Platform Services Controller or vCenter Server with Embedded Platform Services Controll ...
- /var/log/syslog日志usb接口
p:~# cat /proc/bus/input/devices |grep usbP: Phys=usb-0000:00:05.1-1/buttonS: Sysfs=/devices/pci0000 ...
- 自动做bond的脚本
#!/bin/bash # 先备份原来的网卡配置文件 find /etc/sysconfig/network-scripts/ -type f -name "ifcfg*"|xar ...