如何获取Word / Excel文档的页数/工作表数?

时间:2012-11-07 11:12:28

标签: android apache-poi docx4j

在我的项目中,我有一个要求是显示Word文档(.doc,.docx)文件中的页数和Excel文档中的页数(.xls,.xlsx)。我曾尝试使用Docx4j读取.docx文件,但性能非常差,但我只需要字数并尝试使用Apache POI。我收到一个错误,例如:

"trouble writing output: Too many methods: 94086; max is 65536. By package:" 

我想知道是否有任何可用于Android的付费/开源库。

1 个答案:

答案 0 :(得分:2)

无法在MS Word文件中显示确切的页数,因为它对于不同的用户会有所不同。具体数量取决于打印机设置,纸张设置,字体,可用图像等。

但是,您可以对二进制文件执行以下操作:

  • 打开文件使用POIFSFileSystem或NPOIFSFileSystem
  • 仅提取FileInformationBlock,因为它在构造函数HWPFDocumentCore中完成
  • 使用来自FileInformationBlock的信息创建DocumentProperties,因为它在HWPFDocument的构造函数中完成
  • 获取DOP的属性cPg的值:DocumentProperties :: getCPg()

此字段的说明是:“一个有符号整数值,指定主文档中最后计算或估计的页数,具体取决于fExactCWords和fIncludeSubdocsInStats的值。”

对于DOCX / XLSX文档,您需要访问相同(我假设)的属性,但使用SAX或StAX方法。