- jdk 1.8
- Maven 3.6
- SpringBoot 2.1.4.RELEASE
- aspose-cells 8.5.2
- Idea
或java
參照: 基於SpringBoot構建分模塊項目工具
模板:測試
導出後效果:url
pom.xml設計
如遇到jar沒法下載的狀況,可自行下載到本地,而後手動添加到項目中code
<dependencies> <!-- 你的其餘jar --> <!-- aspose --> <dependency> <groupId>com.aspose</groupId> <artifactId>aspose-cells</artifactId> <version>8.5.2</version> </dependency> </dependencies> <repositories> <repository> <id>AsposeJavaAPI</id> <name>Aspose Java API</name> <url>http://repository.aspose.com/repo/</url> </repository> </repositories>
Aspose默認引入的是評估版(未指定許可證),此版本可以使用所有功能,可是有如下兩個限制:xml
- 運行程序時,只能打開100個Excel文件。若是您的應用程序超過此數量,將引起異常。
- 帶有評估水印的工做表
若是你的應用場景不能接受以上兩點限制,可在官網購買許可證,而後經過校驗許可證解除限制;若是你能夠接受,請忽略此操做;htm
官網提供多種校驗方式,此處只列舉其中一種將License配置在項目中對象
在resources包下添加license.xml
建立AsposeUtils工具類,添加方法校驗方法
package com.wayne.common.utils; import com.aspose.cells.License; import java.io.InputStream; /** * Aspose工具類 * @author Wayne * @date 2019/6/10 */ public class AsposeUtils { /** * 校驗Aspose的License */ private static Boolean checkLicense() { try { InputStream license = AsposeUtils.class.getClassLoader().getResourceAsStream("license.xml"); License aposeLic = new License(); aposeLic.setLicense(license); } catch (Exception e) { e.printStackTrace(); } return License.isLicenseSet(); } }
此處列舉爲較簡單的單個sheet,且不分頁導出,更多使用方式請參考官網文檔
package com.wayne.common.utils; import com.aspose.cells.License; import com.aspose.cells.Workbook; import com.aspose.cells.WorkbookDesigner; import java.io.InputStream; import java.util.List; /** * Aspose工具類 * @author Wayne * @date 2019/6/10 */ public class AsposeUtils { /** * @param head 單個對象,將對象做爲此參數傳入。如沒有,傳入null * @param list 多個對象時,將對象做爲此參數傳入。如沒有,傳入null * @param templateName 模板所在的位置,如:E:/template/studentTemplate.xlsx * @param resultFilePath 生成後的文件所存放的文件夾,如:E:/data/ * @return 生成後的文件路徑及文件名,如:E:/data/student.xlsx */ public static <H> String exportExcelByAsposeWithTemplate(H head, List list, String templateName, String resultFilePath) { // 校驗許可證 if(!checkLicense()) { return null; } // 生成後文件名 String resultFile = resultFilePath + System.currentTimeMillis() + ".xlsx"; try { // 加載模板 Workbook wb = new Workbook(templateName); // 加載設計器 WorkbookDesigner designer = new WorkbookDesigner(); designer.setWorkbook(wb); // 單個對象和集合區分(在模板中定義方式不一樣) if(null != head) { designer.setDataSource("Head", head); } if(null != list) { designer.setDataSource("List", list); } designer.process(); wb.save(resultFile); wb.dispose(); } catch (Exception e) { e.printStackTrace(); } return resultFile; } /** * 校驗Aspose的License */ private static Boolean checkLicense() { try { InputStream license = AsposeUtils.class.getClassLoader().getResourceAsStream("license.xml"); License aposeLic = new License(); aposeLic.setLicense(license); } catch (Exception e) { e.printStackTrace(); } return License.isLicenseSet(); } }
@Test public void exportExcelByAsposeWithTemplateTestCase() { String templateName = "E:/Temp/Template.xlsx"; String resultFilePath = "E:/Temp/"; // 單個對象測試 UserOne userOne = new UserOne(); userOne.setId(1); userOne.setUsername("Tom"); userOne.setPassword("123123"); // 集合測試 List<UserTwo> lists = new ArrayList<>(); for(int i = 0; i < 10; i++) { UserTwo temp = new UserTwo(); temp.setId(i*10); temp.setUsername(String.valueOf((i*100))); lists.add(temp); } String resultFileName = AsposeUtils.exportExcelByAsposeWithTemplate(userOne, lists, templateName, resultFilePath); assert null != resultFileName; }
運行測試用例,綠了~~~
常規佔位 (¬_¬)…