excel版本问题解决方案
在實(shí)際的開發(fā)中遇到過的問題,簡(jiǎn)單的描述一下。就是需要解析Excel
文件,讀取數(shù)據(jù)入庫(kù),并且將文件也入庫(kù)(文件路徑)。解析完成后,文件入庫(kù)的數(shù)據(jù)莫名其妙的多了一個(gè)文件名0000000000000
的文件。搞得很蒙逼。經(jīng)過報(bào)錯(cuò)信息,打斷點(diǎn),才找到問題原因,excel 版本,沒有兼容的問題。 兼容那一塊只使用了try-catch
處理。在打開Excel文件之后并沒有進(jìn)行關(guān)閉流導(dǎo)致。相當(dāng)于第一次,打開流,未關(guān)閉,第二次打開處理完數(shù)據(jù)文件,流關(guān)閉
Java InputStream.markSupported()獲取輸入流是否支持mark和reset操作
InputStream.markSupported只有返回true,則流將以某種方式記住在調(diào)用mark之后讀取的所有字節(jié),這個(gè)時(shí)候調(diào)用reset()方法才行
在JAVA中提供了一種回退輸入流(PushbackInputStream、PushbackReader),可以把讀取進(jìn)來(lái)的某些數(shù)據(jù)重新回退到輸入流的緩沖區(qū)之中。
根據(jù)文件的頭部信息去判斷,創(chuàng)建合適的類型
上面的解決方案是借鑒了WorkbookFactory.create()中的源碼來(lái)實(shí)現(xiàn)的。
在WorkbookFactory.create()函數(shù)中,肯定有做過對(duì)文件類型的判斷,一起來(lái)看一下源碼是如何判斷的:
總結(jié)
以上是生活随笔為你收集整理的excel版本问题解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于在Android音视频开发中,Goo
- 下一篇: Lucas定理推导过程(全网最全,哈哈哈