Git倉庫地址:【TestLink-SpringBoot使用EasyExcel和BootStrap FileInput上傳Excel】
項目功能
TestLink在線Excel用例轉換xml
將符合用例模板的Excel測試用例,轉換成xml,用於導入TestLink進行用例管理。
使用方法
- 1、編寫測試用例
- 2、打開本項目http://localhost:8080,瀏覽選擇文件,點擊圖標上的上傳icon
- 3、選擇sheet名稱
- 4、點擊點我轉換按鈕,後臺處理好數據後,點擊確定按鈕,下載生成的xml文件。
- 5、在tesklink中,導入生成的xml用例。
技術框架
SpringBoot使用EasyExcel和BootStrap FileInput上傳Excel
後端
- springboot
- springmvc
- easyexcel
- jdom2
前端
- jquery v1.12.4
- Bootstrap v4.3.1
- bootstrap-fileinput v5.0.1
- jquery-confirm v3.3.0
遇到的坑
- 1、使用fileinput插件,不顯示中文
根據官網Demo,注意了css和js的引入順序,並添加了“language: 'zh'”的配置項,頁面還是顯示英文。
HTML:
<input id="excel" name="file" class="file" type="file" placeholder="選擇一個Excel文件">
JS:
$("#excel").fileinput({
language: 'zh',
maxFileCount: 1,
required: true,
uploadAsync: false,
allowedFileExtensions : ['xls','xlsx'],//允許的文件類型
enctype: 'multipart/form-data',
uploadUrl: server + '/testLink/uploadExcel',
showRemove:false,
showPreview : true, //是否顯示預覽
validateInitialCount:true,
overwriteInitial: true//是否在上傳下一個文件的時候覆蓋前一個
});
最終一篇博客中寫到:刪除class="file" 即可。
- 2、使用EasyExcel導入2003版本的xls文件,報錯
根據報錯提示,在MultipartFile.getInputStream()外層包裝了BufferedInputStream,解決問題
EasyExcelFactory.getReader(new BufferedInputStream(excelFile.getInputStream())...
- 3、fileinput插件不顯示圖標,其實是不顯示bootstrap的圖標
bootstrap4默認不支持圖標,將bootstrap3的圖標字體複製到項目中,並添加fonts.css,文件準備即可完成。
由於使用SpringBoot2.x,maven自動將字體文件忽略,如下修改pom.xml,圖標正常展示。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
- 4、下載xml文件
ajax不能下載文件,只要後臺返回文件名,前臺通過window.location.href = url或者form表單提交進行文件下載。
var $eleForm = $("<form method='get'></form>");
$eleForm.attr("action",url);
$(document.body).append($eleForm);
//提交表單,實現下載
$eleForm.submit();