java 如何 判断 读入excel文件的版本(2003?2007?) 请高手指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何 判断 读入excel文件的版本(2003?2007?) 请高手指点相关的知识,希望对你有一定的参考价值。

判断这个文件是哪种版本产生的.比如a.xls和b.xls,前者是2003保存的.后者是2007保存成.xls格式的

2007以上的版本可以保存成.xls格式啊...怎么判断呢?

之前搜到用ActiveXComponent的getProperty("Version")方法,但具体怎么用.有哪位高手知道,请指点

参考技术A apache poi
Workbook hssWB = null;
try
//2003
hssWB = new HSSFWorkbook(new FileInputStream("excel文件"));
catch (Exception e)
// TODO: handle exception
//2007
hssWB = new XSSFWorkbook(new FileInputStream("excel文件"));
追问

你这个是已经知道excel是什么版本的了再读,我现在是不知道他是什么格式的.怎么判断?

追答

这个就是在不知道ecxel是什么版本的情况下写的,先是尝试以2003读如果不是就用2007的读。

参考资料:http://poi.apache.org/spreadsheet/index.html

本回答被提问者采纳
参考技术B 看文件的后缀名就好了。2003是xls,2007是xlsx追问

那2010呢?2010保存的也是.xls的吧

参考技术C 2007以后都是.xlsx的。 只有2003以前是 .xls

java导入excel时遇到的版本问题

  java中读取excel文件时对不同的版本提供了不同的读取方法,这就要求我们在读取excel文件时获取excel文件的版本信息从而通过不同的版本去使用不同的读取方式,

  在WorkbookFactory.create()函数中,做过对文件类型的判断,所以我们如果想通过修改文件后缀去创建对应的Workbook对象是行不通的,我们看一下源码是如何判

  判断笨笨类型从而创建对应的对象的:

public static Workbook create(InputStream inp) throws IOException, InvalidFormatException {

// If clearly doesn‘t do mark/reset, wrap up

if(! inp.markSupported()) {

inp = new PushbackInputStream(inp, 8);

}

if(POIFSFileSystem.hasPOIFSHeader(inp)) {

return new HSSFWorkbook(inp);

}

if(POIXMLDocument.hasOOXMLHeader(inp)) {

return new XSSFWorkbook(OPCPackage.open(inp));

}

throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream");

}

由此我们便可以通过判断不同的文件版本去使用对应的对象读取excel中的信息了

 

 

以上是关于java 如何 判断 读入excel文件的版本(2003?2007?) 请高手指点的主要内容,如果未能解决你的问题,请参考以下文章

java导入excel时遇到的版本问题

java jxls导入excel 的多个sheet 代码该如何写 配置文件怎么写? 还有jxls 能读入07 excel吗?

直接把excel文件上传到服务器,然后用java后台语言读入excel,求完整的代码,最好是能提供一个实例,嘻嘻

如何将多个(excel)文件读入R? [复制]

java导入excel时怎么判断excel文件

POI判断excel文件版本