說(shuō)一下前提吧颜武,為什么涉及到反向讀取數(shù)據(jù)璃搜?為什么讀出來(lái)再抽個(gè)獎(jiǎng)?
之前有段時(shí)間鳞上,項(xiàng)目在讀取Excle中的數(shù)據(jù)用的比較多这吻,其實(shí)也做了讀取數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中,但是做個(gè)簡(jiǎn)單點(diǎn)得吧
說(shuō)一下掏過(guò)來(lái)得東西吧篙议,哈哈兩個(gè)文章一掏就用了唾糯,
java讀取Excel表格中的數(shù)據(jù)
list隨機(jī)抽取元素
來(lái),開始鬼贱!
按照那個(gè)文章說(shuō)的開整
打開開發(fā)軟件,先導(dǎo)個(gè)pom包这难,關(guān)于jxl的舟误,找jar包推薦網(wǎng)址:我也不知道咋發(fā)現(xiàn)的,以后點(diǎn)進(jìn)去找就得了
<!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
來(lái)建一個(gè)對(duì)應(yīng)的實(shí)體類雁佳,對(duì)于每一行數(shù)據(jù)做個(gè)說(shuō)明脐帝,讓數(shù)據(jù)過(guò)去,能知道是干啥的糖权。
然后你的 Sheet Workbook Cell 一些就可以用了
根據(jù)圖來(lái)做,在createRandomList要加一個(gè)過(guò)濾數(shù)據(jù)
原因是列表隨機(jī)取值時(shí)給的列表多了一個(gè)標(biāo)題星澳,所以需要過(guò)濾處理一下
把第一行干掉就完事了:list.remove(0);
但是這個(gè)上面有一點(diǎn)要注意疚顷,這一定會(huì)拋錯(cuò)誤。。
原因是循環(huán)過(guò)來(lái)腿堤,直接取值的時(shí)候會(huì)使sheet.getCell(0,i)阀坏;的時(shí)候會(huì)數(shù)值越界,因?yàn)槟阊h(huán)的時(shí)候笆檀,下一個(gè)可能就突然沒(méi)有這個(gè)值了,如果你知道數(shù)據(jù)總數(shù)忌堂,可以換種寫法當(dāng)傳參值帶過(guò)來(lái)這樣,能解決這個(gè)
但是那句判斷讀取數(shù)據(jù)為空 又感覺(jué)沒(méi)啥用酗洒?
奧士修,是我寫錯(cuò)了,判斷合并單元格的標(biāo)題當(dāng)然沒(méi)用樱衷,但是就算是處理第一條cell0棋嘲,應(yīng)該也不會(huì)執(zhí)行到,因?yàn)樵讷@取到這個(gè)值的時(shí)候就越界了矩桂,但是為什么一定要寫呢沸移?
我猜的原因是while(true)是一直循環(huán)了,防止結(jié)束不了了侄榴,到最后這個(gè)book.close()就不會(huì)處理了雹锣,所以要給一個(gè)break這個(gè),哈哈牲蜀。
以上笆制!
2019年9月5日18點(diǎn)21分 lvlvlv