之前easypoi做了excel和word报表的导出功能,excel是列表的导出,没有在服务器上存储临时文件,直接将流文件导出,除了样式的属性版本不同可能会报错,需要找到对应版本的style之外,其他的没有啥问题。
word报表的导出,因为直接流文件导出可能会有问题,所以首先新建模板后需要将文件流先写入临时的word文件,然后在转成临时pdf文件再输入文件流。

1.本地没有问题,到服务器显示模板路径找不到

这是第一个问题

//临时文件存储路径
   public static String  path = Thread.currentThread().getContextClassLoader().getResource("").getPath();

这块获取到的是jar包类的class文件模板,本地没有问题,到服务器中这块jar类的文件就显示访问不到了,需要把模板文件放在jar同级目录,也方便以后修改。

String  path = jarFile.getParent();
//临时文件存储路径
String docxpath = path + "temporary.docx";
String pdfpath = path + "temporary.pdf";

这样就不会报错temporary.docx临时文件访问不到了。

2.aspose的maven无法下载

这块是困扰时间最长的一个问题,网上查询都是是网络原因还是啥的,无法获取maven的包,去配置文件新增配置同时删除阿里云的镜像就可以拉jar包下来了,各种方法都试了最后还是报错。

最后去仓库一看,jar早就已经下载下来了,就是pom报错,没办法,就采取另外一种方式,直接引用外部jar包。

先去网上找到jar

jar 然后放到lib文件夹下。打开设置新增jar

上传附件时java heap space 上传附件时找不到word文件_java


上传附件时java heap space 上传附件时找不到word文件_java_02


上传附件时java heap space 上传附件时找不到word文件_jar_03


新增完成apply即可。代码就可以引用aspose。

3.编译显示找不到从com.aspose

代码显示正常,但是代码写完编译不通过,显示找不到。
原因就是外部引入的jar,编译打包不会自动去找,需要pom加入一下配置

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <extdirs>${project.basedir}/lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>

4.本地可以了,服务器报错找不到class

这块查看jar,到对应的lib下面会发现还是没有aspose的包。原因就是本地虽然加入jar包了,但是maven没有坐标,maven打包的时候不会把对应的自己引入的包打包进去。

最终解决方案,首先添加坐标

<dependency>
            <groupId>aspose</groupId>
            <artifactId>aspose</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
        </dependency>

这块是自己的jar包的位置,这里的groupId之类的自己写名字。
然后加入

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                 <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>

这样再打包到服务器,就可以正常了。