开发环境

  1. jdk 1.8
  2. Maven 3.6
  3. SpringBoot 2.1.4.RELEASE
  4. aspose-cells 8.5.2
  5. Idea

参照: 基于SpringBoot构建分模块项目

先看效果

模板:

导出后效果:

引入jar包

pom.xml

如遇到jar无法下载的情况,可自行下载到本地,然后手动添加到项目中

  1. <dependencies>
  2. <!-- 你的其他jar -->
  3. <!-- aspose -->
  4. <dependency>
  5. <groupId>com.aspose</groupId>
  6. <artifactId>aspose-cells</artifactId>
  7. <version>8.5.2</version>
  8. </dependency>
  9. </dependencies>
  10. <repositories>
  11. <repository>
  12. <id>AsposeJavaAPI</id>
  13. <name>Aspose Java API</name>
  14. <url>http://repository.aspose.com/repo/</url>
  15. </repository>
  16. </repositories>

校验许可证

Aspose默认引入的是评估版(未指定许可证),此版本可使用全部功能,但是有以下两个限制:

  • 运行程序时,只能打开100个Excel文件。如果您的应用程序超过此数量,将引发异常。
  • 带有评估水印的工作表

如果你的应用场景不能接受以上两点限制,可在官网购买许可证,然后通过校验许可证解除限制;如果你可以接受,请忽略此操作;

官网提供多种校验方式,此处只列举其中一种将License配置在项目中

在resources包下添加license.xml

创建AsposeUtils工具类,添加方法校验方法

  1. package com.wayne.common.utils;
  2. import com.aspose.cells.License;
  3. import java.io.InputStream;
  4. /**
  5. * Aspose工具类
  6. * @author Wayne
  7. * @date 2019/6/10
  8. */
  9. public class AsposeUtils {
  10. /**
  11. * 校验Aspose的License
  12. */
  13. private static Boolean checkLicense() {
  14. try {
  15. InputStream license = AsposeUtils.class.getClassLoader().getResourceAsStream("license.xml");
  16. License aposeLic = new License();
  17. aposeLic.setLicense(license);
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. return License.isLicenseSet();
  22. }
  23. }

导出方法

此处列举为较简单的单个sheet,且不分页导出,更多使用方式请参考官网文档

  1. package com.wayne.common.utils;
  2. import com.aspose.cells.License;
  3. import com.aspose.cells.Workbook;
  4. import com.aspose.cells.WorkbookDesigner;
  5. import java.io.InputStream;
  6. import java.util.List;
  7. /**
  8. * Aspose工具类
  9. * @author Wayne
  10. * @date 2019/6/10
  11. */
  12. public class AsposeUtils {
  13. /**
  14. * @param head 单个对象,将对象作为此参数传入。如没有,传入null
  15. * @param list 多个对象时,将对象作为此参数传入。如没有,传入null
  16. * @param templateName 模板所在的位置,如:E:/template/studentTemplate.xlsx
  17. * @param resultFilePath 生成后的文件所存放的文件夹,如:E:/data/
  18. * @return 生成后的文件路径及文件名,如:E:/data/student.xlsx
  19. */
  20. public static <H> String exportExcelByAsposeWithTemplate(H head, List list, String templateName, String resultFilePath) {
  21. // 校验许可证
  22. if(!checkLicense()) {
  23. return null;
  24. }
  25. // 生成后文件名
  26. String resultFile = resultFilePath + System.currentTimeMillis() + ".xlsx";
  27. try {
  28. // 加载模板
  29. Workbook wb = new Workbook(templateName);
  30. // 加载设计器
  31. WorkbookDesigner designer = new WorkbookDesigner();
  32. designer.setWorkbook(wb);
  33. // 单个对象和集合区分(在模板中定义方式不同)
  34. if(null != head) {
  35. designer.setDataSource("Head", head);
  36. }
  37. if(null != list) {
  38. designer.setDataSource("List", list);
  39. }
  40. designer.process();
  41. wb.save(resultFile);
  42. wb.dispose();
  43. } catch (Exception e) {
  44. e.printStackTrace();
  45. }
  46. return resultFile;
  47. }
  48. /**
  49. * 校验Aspose的License
  50. */
  51. private static Boolean checkLicense() {
  52. try {
  53. InputStream license = AsposeUtils.class.getClassLoader().getResourceAsStream("license.xml");
  54. License aposeLic = new License();
  55. aposeLic.setLicense(license);
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. return License.isLicenseSet();
  60. }
  61. }

测试结果

  1. @Test
  2. public void exportExcelByAsposeWithTemplateTestCase() {
  3. String templateName = "E:/Temp/Template.xlsx";
  4. String resultFilePath = "E:/Temp/";
  5. // 单个对象测试
  6. UserOne userOne = new UserOne();
  7. userOne.setId(1);
  8. userOne.setUsername("Tom");
  9. userOne.setPassword("123123");
  10. // 集合测试
  11. List<UserTwo> lists = new ArrayList<>();
  12. for(int i = 0; i < 10; i++) {
  13. UserTwo temp = new UserTwo();
  14. temp.setId(i*10);
  15. temp.setUsername(String.valueOf((i*100)));
  16. lists.add(temp);
  17. }
  18. String resultFileName = AsposeUtils.exportExcelByAsposeWithTemplate(userOne, lists, templateName, resultFilePath);
  19. assert null != resultFileName;
  20. }

运行测试用例,绿了~~~

占位符

常规占位 (¬_¬)…

Java按模板导出Excel———基于Aspose实现的更多相关文章

  1. Java无模板导出Excel,Apache-POI插件实现

    开发环境 jdk 1.8 Maven 3.6 Tomcat 8.5 SpringBoot 2.1.4.RELEASE Apache-POI 3.6 Idea 注意: 我是在现有的基于SpringBoo ...

  2. java五行代码导出Excel

    目录 先看代码 再看效果 EasyExcel 附: Java按模板导出Excel---基于Aspose实现 Java无模板导出Excel,Apache-POI插件实现 已经写过两种Excel导出插件了 ...

  3. aspose.cells根据模板导出excel

    又隔十多天没写博客了,最近都在忙项目的事情,公司人事变动也比较大,手头上就又多了一个项目.最近做用aspose.cells根据模板导出excel报价单的功能,顺便把相关的核心记下来,先上模板和导出的效 ...

  4. 关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种实现方式)

    导出excel通用模板(程序定义模板导出) 转载原文:https://www.jianshu.com/p/5c7b359a159c 如下代码,本方法主要用于程序定义模板格式,并导出文件.该方法将定义和 ...

  5. java使用jxls导出Excel

    jxls是基于POI的Excel模板导出导入框架.通过使用类似于jstl的标签,有效较少导出Excel的代码量. 1.pom <!-- https://mvnrepository.com/art ...

  6. POI通过模板导出EXCEL文件

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

  7. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  8. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

  9. apache poi根据模板导出excel

    需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; im ...

随机推荐

  1. 4_Prototype 原型

    #Prototype ``` // 不好的做法 monster ghost demon sorcerer class Spawner { public: virtual ~Spawner() {} ; ...

  2. codeforces 515C C. Drazil and Factorial(水题,贪心)

    题目链接: C. Drazil and Factorial time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  3. RTP Payload Format for Opus Speech and Audio Codec

    [Docs] [txt|pdf] [Tracker] [WG] [Email] [Diff1] [Diff2] [Nits] Versions: (draft-spittka-payload-rtp- ...

  4. Gym - 100570B :ShortestPath Query(SPFA及其优化)

    题意:给定N点M边的有向图,每条边有距离和颜色,一条有效路径上不能有相邻的边颜色相同.现在给定起点S,多次讯问S到点X的最短有效距离. TLE思路:用二维状态dis(u,c)表示起点到u,最后一条边的 ...

  5. Maven(5)-优化和重构POM

    本文主要介绍如何优化pom,杜绝重复(DRY). 1)模块重复依赖: 2)坐标版本号重复: 3)兄弟依赖 一.项目骨架 上图说明: multi-module-project是一个有多个模块构成的项目, ...

  6. OIer应该知道的二进制知识

    计算机使用\(2\)进制,这是众所周知的.在学习\(OI\)的过程中,\(2\)进制也显得尤为重要.有时候,细节决定成败,所以我想总结一下容易被遗忘和误解的关于\(2\)进制的知识. 1.运算符 &a ...

  7. poj 2390 Bank Interest(计算本利和)

    一.Description Farmer John made a profit last year! He would like to invest it well but wonders how m ...

  8. POJ3087(模拟)

    #include"iostream" #include"string" #include"map" using namespace std; ...

  9. web攻击之三:SQL注入攻击的种类和防范手段

    观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. ...

  10. 纯js+html+css实现模拟时钟

    前几天没事写的个模拟时钟,代码仅供小白参考,大神请自动绕过. <!DOCTYPE html> <html lang="en"> <head> & ...