從Excel批量匯入資料到資料庫

2021-10-23 19:19:48 字數 3739 閱讀 9888

1.讀取網路路徑的excel檔案(流檔案格式)

2.獲取excel的每一行資料,並驗證學校班級是否存在,並獲取對應的schoolid和classid

3.批量儲存學生資訊,並返回儲存成功的行數

匯入關於excel的pom檔案

>

>

org.apache.poigroupid

>

>

poiartifactid

>

>

3.16version

>

dependency

>

>

>

org.apache.poigroupid

>

>

poi-ooxmlartifactid

>

>

3.16version

>

dependency

>

測試過程中發現bug:

1、**資料容易出現前後空格,居中顯示時,對資料核查出現失誤,故需要對**資料使用trim()去除資料的前後空格。

2、**資料為純數字時,獲取**會預設型別為number,此時需要獲取string會報「cannot get a string value from a numeric cell」錯,需要提前使用 c0.setcelltype(celltype.string); 詳情見下面**。

;// 試圖連線並取得返回狀態碼

("檔案伺服器連線失敗");

}else

else

if(fileurl.

contains

(".xls"))

else

//獲取excel文件中的第乙個表單

sheet sheet = wb0.

getsheetat(0

);if(sheet.

getphysicalnumberofrows()

<2)

", sheet.

getphysicalnumberofrows()

);throw

newbadrequestexception

("**資料過少,儲存失敗");

}//對sheet中的每一行進行迭代

for(row r : sheet)

//建立實體類

student stu=

newstudent()

; cell c0 = r.

getcell(0

);cell c1 = r.

getcell(1

);cell c2 = r.

getcell(2

);if(null == c0 || null == c1 || null == c2)

//當**內資料為數字時,會自動轉換成number型別,所以需提前轉換**資料為string型別

c0.setcelltype

(celltype.string)

; c1.

setcelltype

(celltype.string)

; c2.

setcelltype

(celltype.string)

; stu.

setschoolname

(c0.

getstringcellvalue()

);stu.

setclassname

(c1.

getstringcellvalue()

);stu.

setname

(c2.

getstringcellvalue()

);//第四列資料選填

stu.

setcardid

(null == r.

getcell(3

)?"": r.

getcell(3

).getstringcellvalue()

);//檢查學生的學校和班級是否存在

schoolclass scinfo = badgedatarepository.

queryschoolclassbyname

(stu.

getclassname()

, stu.

getschoolname()

);if(null == scinfo)

logger.

debug

("studentexcelimport excel[{}] name:{},schoolid:{},classid:{}"

, r.

getrownum()

, stu.

getstudentname()

, scinfo.

getschoolid()

, scinfo.

getclassid()

);stu.

setschoolid

(scinfo.

getschoolid()

);stu.

setclassid

(scinfo.

getclassid()

);temp.

add(stu);}

wb0.

close()

; filein.

close()

;//批量儲存學生資訊,避免頻繁開關資料庫連線

bret = badgedatarepository.

addstudentlist

(temp);if

(!bret)

return temp.

size()

;}}catch

(ioexception e)

對mysql資料庫進行批量新增

<

insert id=

"addstudentlist" usegeneratedkeys=

"true" keyproperty=

"id"

>

insert

into student(

name,

cardid,

schoolid,

schoolname,

classid,

classname

)values

"list" item=

"item"

index

="index" separator=

",">(#,

#,#,

#,#,#)

<

/foreach>

<

/insert

>

如何批量從Excel檔案中匯入資料到資料庫 一

設計系統不單單要考慮到錄入介面,對哪些使用者已經儲存的資料檔案 基本上都是excel檔案 難道需要使用者再次將已有的資料進行錄入嗎?答案肯定是 no,乙個好的設計和編碼人員再設計系統和編碼時,更多的需要考慮到介面友好,使用者操作簡單和設計合理,能更多的從使用者的角度來分析設計系統。下面來說說實際工作...

如何批量從Excel檔案中匯入資料到資料庫 二

設計系統不單單要考慮到錄入介面,對哪些使用者已經儲存的資料檔案 基本上都是excel檔案 難道需要使用者再次將已有的資料進行錄入嗎?答案肯定是 no,乙個好的設計和編碼人員再設計系統和編碼時,更多的需要考慮到介面友好,使用者操作簡單和設計合理,能更多的從使用者的角度來分析設計系統。下面來說說實際工作...

從EXCEL匯入資料到SQL SERVER

從excel匯入資料到sql server 左直拳 介紹兩種途徑將資料從excel中匯入到sql server。一 在程式中,用ado.net。如下 連線串 string strconn provider microsoft.jet.oledb.4.0 extended properties exc...