Java POI匯入Excel資料預覽與儲存

2021-09-25 02:00:07 字數 2665 閱讀 2001

本文需要使用到5個jar包分別是:poi-3.8-20120326.jarpoi-ooxml-3.8-20120326.jar

poi-ooxml-schemas-3.8-20120326.jardom4j-1.6.1.jarxmlbeans-2.3.0.jar

書寫方法inputtingexcelpreview傳入檔案型別,返回型別為returnlistjson

先宣告乙個輸入流inputstream並把檔案轉換為輸入流:inputstream is = new fileinputstream(file);

然後宣告乙個工作簿workbookworkbook hssfworkbook = null;獲取檔名,判斷檔案的格式如果為xlsx則以xssfworkbook類讀取檔案,如果為xls則以hssfworkbook類讀取檔案,如下:

string filename=file.

getname()

;if(filename.

endswith

("xlsx"))

else

if(filename.

endswith

("xls"))

宣告乙個int型別的變數存放excel**除首行以外的總行數,再宣告乙個int型別存放符合條件的資料的行數宣告乙個list存放讀取成功的資料,如下:

int count=0;

int success=0;

list

listsupplier=

newarraylist

();

通過迴圈遍歷工作表,獲取該工作表的首行,再迴圈遍歷工作表內的行,例項化乙個與資料對應的po類或vo類,然後迴圈遍歷行內的單元格,宣告乙個string型別的引數接收首行單元格的值判斷單元格的值,再宣告乙個string型別的引數接收對應列的值,通過比較首行單元格的值判斷**是否是需要匯入的**,再判斷對應列的值是否符合條件,符合條件的新增到例項後的po類或vo類中,不符合則跳出該行內單元格迴圈,當該行所有單元格符合條件時把例項後的po類或vo類放入list序列中。最後把序列寫入返回的資料的類中,在servlet中,把返回的資料中的list儲存到session中,返回的資料轉換為json格式返回到頁面,**如下:

// 迴圈工作表sheet

for(

int i =

0; i getnumberofsheets()

; i++

) row toprow = hssfsheet.

getrow(0

);count+=hssfsheet.

getlastrownum()

;// 迴圈行row

for(

int j =

1; j <= hssfsheet.

getlastrownum()

; j++)if

("**商名稱"

.equals

(name)

)elseif(

"跟進人"

.equals

(name)

)else

}else

}else}if

(state==

true)}

}}listjson=

newreturnlistjson

(1,"共預覽"

+count+

"條,成功預覽"

+success+

"條,資料異常"

+(count-success)

+"條!",0

,listsupplier)

;

儲存資料時在頁面請求servlet內的方法讀取session中的list並傳遞到daoimpl內的方法中使用迭代器迴圈遍歷呼叫新增sql語句並賦值後執行即可。

conn=dbutil.

getconnection()

;for

(iterator

iterator=listsupplier.

iterator()

;iterator.

hasnext()

;)

java poi 生成excel模板

一 手動生產excel模板 最笨的一種實現方式,不推薦使用 建立excel hssfworkbook wb new hssfworkbook 建立工作簿 hssfsheet sheet wb.createsheet title 建立表單 sheet.setdefaultcolumnwidth sho...

Java Poi建立與讀取Excel

建立excel表 public class test catch parseexception e 主函式 public static void main string args 建立下拉列表 sheet sethssfvalidation sheet,textlist,0,500,2,2 寫入實體...

java POI 實現匯出excel增加行

最近用poi實現根據模板匯出excel,需要從中間行插入查詢到的資料 但是用creatrow生成的資料會覆蓋後面的模板內容 查了api沒有找到插入行的方法 不過找到shiftrows方法將最後的空行移到需要插入行的位置,再用createrow生成 sheet.shiftrows insertrown...