POI判斷excel文件版本


1 通過POIFSFileSystem.hasPOIFSHeader(InputStream is);判斷Excel 2003及以下

2通過POIXMLDocument.hasOOXMLHeader(InputStream is);判斷Excel 2007及以上

這種判斷,即使將excel文件后綴變換,也會正確識別,比如將.xlsx人為換成xls導入,還是能識別出為2007以上版本。

注意:傳入的InputStream用BufferedInputStream裝飾一層,如果直接傳入InputStream,如果流不支持mark/reset機制,會拋出java.io.IOException: mark/reset not supported

最后附上示例:

public static void main(String[] args)throws Exception {
        File file = new File("D:\\docs\\work\\需求排期安排.xlsx");
        InputStream is = new FileInputStream(file);
        //這里用BufferedInputStream再包裝一層,可解決:mark/reset not supported問題
        BufferedInputStream bis = new BufferedInputStream(is);
        if(POIFSFileSystem.hasPOIFSHeader(bis)) {
            System.out.println("2003及以下");
        }
        if(POIXMLDocument.hasOOXMLHeader(bis)) {
            System.out.println("2007及以上");
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM