• 记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这个工具包也是第一次用,不熟悉里面的内容,这里做下记录。

  • 相关阅读:
    自然语言处理(三)——PTB数据的batching方法
    自然语言处理(二)——PTB数据集的预处理
    自然语言处理(一)——语言模型评价方法
    TensorFlow数据集(二)——数据集的高层操作
    TensorFlow数据集(一)——数据集的基本使用方法
    TensorFlow多线程输入数据处理框架(四)——输入数据处理框架
    Node的简介
    seajs的原理以及基本使用
    git常用指令
    一个小白的四次前端面试经历
  • 原文地址:https://www.cnblogs.com/timePasser-leoli/p/9199107.html
Copyright © 2020-2023  润新知