java 如何 判断 读入excel文件的版本(2003?2007?) 请高手指点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何 判断 读入excel文件的版本(2003?2007?) 请高手指点相关的知识,希望对你有一定的参考价值。
判断这个文件是哪种版本产生的.比如a.xls和b.xls,前者是2003保存的.后者是2007保存成.xls格式的
2007以上的版本可以保存成.xls格式啊...怎么判断呢?
之前搜到用ActiveXComponent的getProperty("Version")方法,但具体怎么用.有哪位高手知道,请指点
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以前是 .xlsjava导入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 jxls导入excel 的多个sheet 代码该如何写 配置文件怎么写? 还有jxls 能读入07 excel吗?