本文主要是介绍获取Excel文档的版本(2003或者2007),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因工作需要解析excel文档,用poi插件来进行处理,但是2003版本之前的和2007版本之后的解析方式不一样,开始,我们是以后缀名来区分的(2003之前是xls,2007之后是xlsx),后来发现,如果一个2003文档的后缀名被改成xlsx或反之,解析都会出现一些莫名其妙的问题,所以根据文档内容来判断版本是非常必要的。于是在网上找了很久终于找到一个切实可行的方法,代码如下
public static void main(String[] args) {File f = new File("d://test2.xls");InputStream inp = null;try {inp = new FileInputStream(f);} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}if(! inp.markSupported()) {inp = new PushbackInputStream(inp, 8);//封装下输入流,使得以下方法获取输入流的内容而不破坏输入流内容}try {if(POIFSFileSystem.hasPOIFSHeader(inp)) {System.out.println("2003及以下");}if(POIXMLDocument.hasOOXMLHeader(inp)) {System.out.println("2007及以上");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}
}
其中POIFSFileSystem和POIXMLDocument用到了poi-3.5-FINAL-20090928.jar、poi-ooxml-3.5-FINAL-20090928.jar、poi-ooxml-schemas-3.9-20121203.jar、xmlbeans-2.3.0.jar等jar
这篇关于获取Excel文档的版本(2003或者2007)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!