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. 使用上述方式一