excel-converter簡單實現Excel文件導入(無數據校驗)

導入時的坑:

如果excel導入的數據類型 和 bean的數據類型不匹配,會報錯

導入依賴

        <!--excel 基於poi的再次封裝-->
        <dependency>
            <groupId>com.jvm123</groupId>
            <artifactId>excel-converter</artifactId>
            <version>1.0</version>
        </dependency>

Excel-converter 是一個基於poi的,將excel中的數據讀取爲java對象,以及將java對象的list導出到excel的工具 。

 

導入的工具類:

/**
 * @Description
 * @Author by mocar小師兄
 * @Date 2020/5/12 22:45
 **/
@Component
public class ExcelHandleUtils {
    //解析爲map
    public Result uploadFileToMap(MultipartFile file) throws IOException {
        try {
            String fileName = file.getOriginalFilename();
            String fileExtName = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
            //獲取輸入流
            InputStream is = file.getInputStream();
            ExcelImporter excelImporter = new ExcelImporter();
            excelImporter.setExcelProperties(getExcelHandleProperties());
            // 讀取爲  List<Map>  其中,map結果:key爲bean的變量名
            List<Map<String, Object>> excelMapList = excelImporter.convertToMap(is);
            for (Map<String, Object> map : excelMapList) {
                System.out.println(map);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ResultUtil.error("Excel解析失敗");
    }

    //封裝爲obj
    public <T> Result uploadFileToObj(MultipartFile file,Class<T> tClazz) throws IOException {
        try {
            String fileName = file.getOriginalFilename();
            String fileExtName = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
            //獲取輸入流
            InputStream is = file.getInputStream();
            ExcelImporter excelImporter = new ExcelImporter();
            excelImporter.setExcelProperties(getExcelHandleProperties());
            // 讀取爲  List<對象>
            //坑:如果excel導入的數據類型 和 bean的數據類型不匹配,會報錯
            //List<T> convertList = excelImporter.convert(file.getInputStream(), tClazz);
            Date date = new Date();
            System.out.println(date);
            List<T> convertList = excelImporter.convert(file.getInputStream(), tClazz);
            for (T t : convertList) {
                User user = (User) t;
                System.out.println(user);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ResultUtil.error("Excel解析失敗");
    }

    private ExcelProperties getExcelHandleProperties(){
        ExcelProperties properties = new ExcelProperties();
        //要導入的表格(sheet)在excel文件中的索引順序
        properties.setSheetIndex(0);
        //對應每一列的說明的行的序號(可無)--> 即別名
        properties.setCommentRowIndex(0);
        //對應java中bean屬性名稱的行的序號 --> 即變量名
        properties.setNameRowIndex(1);
        //要獲取的數據開始行的序號-->即數據從第幾行開始
        properties.setFirstDataRowIndex(2);
        //要獲取的數據結束行的序號(可無)-->即最後一行數據在第幾行
        //properties.setLastDataRowIndex(3);
        //要獲取的數據的條數(可無)
        //properties.setDataRowNum(2);
        return properties;
    }
}

 

 

參考:

http://jvm123.com/2019/08/excel-converter.html

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章