office相关操作

一、获取word文档的页数错误

通过c# 打开word 文档, 获取页数

 

报错信息:

Caused by: java.lang.Error: Invalid memory access
  at com.sun.jna.Native.invokeInt(Native Method)
  at com.sun.jna.Function.invoke(Function.java:426)
  at com.sun.jna.Function.invoke(Function.java:361)

  

定位的原因:

1. 由于使用c#等微软原生工具处理, 需要使用office 打开word

2. 系统使用 wps 打开, 没有权限, 报出这个错误。

 

解决方式:

使用office word打开, 而不是使用wps打开。(使用office word创建文件)

 

二、导出excel、 word文件

方式一:
1. 静态方法中的写法:final InputStream inputStream = DocUtils.class.getClassLoader().getResourceAsStream("doc/template.docx");
2. 非静态方法中的写法: final InputStream inputStream = this.getClass().getResourceAsStream("doc/template.docx");
方式二:
 final String templateFileName = DocUtils.class.getClassLoader().getResource("doc/template.docx").getFile(); 
 final File templateFile = new File(templateFileName);

 

 推荐使用方式一, 使用流的方式。

原因分析: 使用方式二的话,可能要求操作系统安装相关软件,例如安装office软件, 使用方式一本地(本地机器安装了office, 包括了word)好用, 而在linux 服务器(linux服务器)不好用。

 

导出失败的话, 排查思路:

1.  确认模板文件打到jar包中了

2.  使用上述方式一

 

posted @ 2022-05-31 15:38  知行-zhixing  阅读(73)  评论(0编辑  收藏  举报