說(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),開(kāi)始!
按照那個(gè)文章說(shuō)的開(kāi)整

打開(kāi)開(kāi)發(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ù),可以換種寫(xiě)法當(dāng)傳參值帶過(guò)來(lái)這樣,能解決這個(gè)
但是那句判斷讀取數(shù)據(jù)為空 又感覺(jué)沒(méi)啥用?
奧,是我寫(xiě)錯(cuò)了,判斷合并單元格的標(biāo)題當(dāng)然沒(méi)用,但是就算是處理第一條cell0,應(yīng)該也不會(huì)執(zhí)行到,因?yàn)樵讷@取到這個(gè)值的時(shí)候就越界了,但是為什么一定要寫(xiě)呢?
我猜的原因是while(true)是一直循環(huán)了,防止結(jié)束不了了,到最后這個(gè)book.close()就不會(huì)處理了,所以要給一個(gè)break這個(gè),哈哈。
以上!
2019年9月5日18點(diǎn)21分 lvlvlv