国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Bmob / 2933人閱讀

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

1 背景

小白今天閑著沒事,在公司摸魚,以為今天有事無聊的一天,突然上頭說小子,今天實(shí)現(xiàn)一下批量導(dǎo)入Excel數(shù)據(jù)吧,當(dāng)時(shí)我的內(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(默認(rèn)第一個(gè))

 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)里面,改進(jìn)的話可以創(chuàng)建一個(gè)列表list,將對象add進(jìn)去,然后在循環(huán)外面進(jìn)行批量插入

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

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

暫時(shí)想到這么多 歡迎指教評論

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    Tecode 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<