亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

springboot批量導(dǎo)入excel數(shù)據(jù)

Bmob / 3010人閱讀

摘要:背景小白今天閑著沒事,在公司摸魚,以為今天有事無聊的一天,突然上頭說小子,今天實現(xiàn)一下批量導(dǎo)入數(shù)據(jù)吧,當(dāng)時我的內(nèi)心是拒絕的,然后默默打開。介紹框架本身并不支持讀取,所有讀取需要借助一些框架。

1 背景

小白今天閑著沒事,在公司摸魚,以為今天有事無聊的一天,突然上頭說小子,今天實現(xiàn)一下批量導(dǎo)入Excel數(shù)據(jù)吧,當(dāng)時我的內(nèi)心是拒絕的,然后默默打開idea。

2 介紹 2.1 框架

java本身并不支持讀取excel,所有讀取excel需要借助一些框架。目前有幾種方式,

1. Apache POI

2. Java Excel API

3. easyexcel

這里主要講解的是 Apache POI,Apache POI支持03版以及07年版 區(qū)別是后綴不一樣,03版對應(yīng)的是xls 07版對應(yīng)的是xlsx xlsx
這里主要講解的是07版的

2.2 excel字段介紹

1.sheet表示的是

excel底部的工作表.

對應(yīng)的是POI的的XSSFSheet

2.row表示的是行

對應(yīng)的是POI的的XSSFRow

3.cell表示的是每一行的單元格.

對應(yīng)的是POI的的Cell

3 源碼 3.0 片段說明

1.上傳文件使用springboot的MultipartFile
對應(yīng)

MultipartFile file

2.創(chuàng)建對象

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);

3.獲取sheet(默認第一個)

 XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
3.1 控制層源碼
@RequestMapping("/import")
public void importExcel(@RequestParam("file") MultipartFile file) throws Exception{
    InputStream inputStream = file.getInputStream();

    //07年的 不兼容之前
    XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);

    XSSFSheet sheet = xssfWorkbook.getSheetAt(0);

    //獲取行數(shù)
    int lastRowNum = sheet.getLastRowNum();
    for (int i = 1; i <= lastRowNum; i++) {
        XSSFRow row = sheet.getRow(i);
        QuChannel quChannel = new QuChannel();
        if (row.getCell(0) != null){
            row.getCell(0).setCellType(XSSFCell.CELL_TYPE_STRING);
            quChannel.setChannel(row.getCell(0).getStringCellValue());
        }
        if (row.getCell(1) != null){
            row.getCell(1).setCellType(XSSFCell.CELL_TYPE_STRING);
            quChannel.setChannelName(row.getCell(1).getStringCellValue());
        }
        if (row.getCell(2) != null){
            row.getCell(2).setCellType(XSSFCell.CELL_TYPE_STRING);
            quChannel.setRemarks(row.getCell(2).getStringCellValue());
        }
        if (row.getCell(3) != null){
            quChannel.setChannelSource((int) row.getCell(3).getNumericCellValue());
        }
        if (row.getCell(4) != null){
            quChannel.setActivityType((int) row.getCell(4).getNumericCellValue());
        }
        if (row.getCell(5) != null){
            quChannel.setDeliveryTime(row.getCell(5).getDateCellValue());
        }
        if (row.getCell(6) != null){
            row.getCell(6).setCellType(XSSFCell.CELL_TYPE_STRING);
            quChannel.setOriginalLink(row.getCell(6).getStringCellValue());
        }
        if (row.getCell(7) != null){
            row.getCell(7).setCellType(XSSFCell.CELL_TYPE_STRING);
            quChannel.setSaLink(row.getCell(7).getStringCellValue());
        }
        if (row.getCell(8) != null){
            quChannel.setDeliveryMode((int) row.getCell(8).getNumericCellValue());
        }
        if (row.getCell(9) != null){
            quChannel.setCreateGroup((int) row.getCell(9).getNumericCellValue());
        }
        if (row.getCell(10) != null){
            row.getCell(10).setCellType(XSSFCell.CELL_TYPE_STRING);
            quChannel.setRemark(row.getCell(10).getStringCellValue());
        }
        quChannelMapper.insert(quChannel);

    }
}
3.2 review

1.避免將sql寫在for循環(huán)里面,改進的話可以創(chuàng)建一個列表list,將對象add進去,然后在循環(huán)外面進行批量插入

2.想要去重的話可以使用set的不能重復(fù)添加特性

3.注意excel的字段與類屬性的對應(yīng)關(guān)系,如果excel字段是string,但是累屬性是整形的話,可以使用枚舉類

暫時想到這么多 歡迎指教評論

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/74912.html

相關(guān)文章

  • 第一篇(從django后臺解析excel數(shù)據(jù)批量導(dǎo)入數(shù)據(jù)庫)

    摘要:總結(jié)整個過程的難點在于獲取文件對象,從數(shù)據(jù)中取值然后在按取出,這樣我們就可以從后臺上傳文件,然后進行批量導(dǎo)入數(shù)據(jù)庫,其他數(shù)據(jù)格式只需要改和中的數(shù)據(jù)字段就可以 第一篇(從django后臺解析excel數(shù)據(jù)批量導(dǎo)入數(shù)據(jù)庫) 文章會在github中持續(xù)更新 作者: knthony github 聯(lián)系我 1.django 如何從后臺上傳excel中批量解析數(shù)據(jù) 要從django后臺導(dǎo)入...

    2i18ns 評論0 收藏0
  • 批量導(dǎo)入數(shù)據(jù)excel表格)寫入數(shù)據(jù)

    摘要:批量導(dǎo)入數(shù)據(jù)庫思想之一頁面上傳表格后臺解析表格的數(shù)據(jù)暫放數(shù)據(jù)結(jié)構(gòu)中或自己看情況處理,再把里面的數(shù)據(jù)批量存入數(shù)據(jù)庫。 批量導(dǎo)入數(shù)據(jù)庫思想之一:頁面上傳excel表格后臺解析excel表格的數(shù)據(jù)暫放數(shù)據(jù)結(jié)構(gòu)中(list或Map,自己看情況處理),再把list里面的數(shù)據(jù)批量存入數(shù)據(jù)庫。直接貼代碼: 前端: 文件描述: ...

    darkbaby123 評論0 收藏0
  • Excel快速批量導(dǎo)入生產(chǎn)Cavns并生成圖片下載到本地

    摘要:然后封面就一個一個下啦是不是很方便具體源代碼在上有用的話記得星星 有時候會有這樣的需求吧 有一個表格里面有一批數(shù)據(jù)需要批量生成封面我們在瀏覽器里可以批量生成比如 showImg(https://segmentfault.com/img/bV67kB?w=2308&h=996); 我們有這樣一個表格需要生成圖書封面 showImg(https://segmentfault.com/img...

    SillyMonkey 評論0 收藏0
  • Excel批量數(shù)據(jù)導(dǎo)入和導(dǎo)出,如何做優(yōu)化?

    摘要:并且在對的抽象中,每一行,每一個單元格都是一個對象。對支持使用官方例子需要繼承,覆蓋方法,每讀取到一個單元格的數(shù)據(jù)則會回調(diào)次方法。概要Java對Excel的操作一般都是用POI,但是數(shù)據(jù)量大的話可能會導(dǎo)致頻繁的FGC或OOM,這篇文章跟大家說下如果避免踩POI的坑,以及分別對于xls和xlsx文件怎么優(yōu)化大批量數(shù)據(jù)的導(dǎo)入和導(dǎo)出。一次線上問題這是一次線上的問題,因為一個大數(shù)據(jù)量的Excel導(dǎo)出...

    Tecode 評論0 收藏0

發(fā)表評論

0條評論

Bmob

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<