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中的信息了

时间: 2024-11-14 10:59:19

java导入excel时遇到的版本问题的相关文章

java导入excel时处理日期格式(已验证ok)

在Excel中的日期格式,比如2009-12-24将其转化为数字格式时变成了40171,在用java处理的时候,读取的也将是40171.如果使用POI处理Excel中的日期类型的单元格时,如果仅仅是判断它是否为日期类型的话,最终会以NUMERIC类型来处理.正确的处理方法是先判断单元格的类型是否则NUMERIC类型,然后再判断单元格是否为日期格式,如果是的话, 创建一个日期格式,再将单元格的内容以这个日期格式显示出来.如果单元格不是日期格式,那么则直接得到NUMERIC的值就行了.具体代码如下:

导入Excel时编码格式的备忘录

今天妹妹在做计算机二级的题目,是让将"员工信息.csv"导入到Excel, 导入时让选择字符集,选项有:GB18030,GB2312,GB2312-80: 以前也没关注过字符集的情况,百度了下几个字符集的区别,建议选择GF18030,因为有姓名字段,防止有生僻字,但标准答案是GF2312-80. 又有一道题目是将"员工档案.txt"导入excel,但是这个题目的标准答案就是GB18030. 随后查询了csv格式的系统默认编码为GB2312. txt文件的编码格式有四

Java导入Excel文件

package com.cme.core; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Ar

导入Excel时,会丢失一些手机号,或者固定电话号

问题出在于,他们将数据填入Excel时,有些格式是数值类型,有些是文本类型 当用OLEDB读取Excel的时候,在Extended Properties中若没有配置IMEX=1的属性,微软的处理机制是将列转换为同一类型来读取的.例如在第一行写的数值格式,而第二行写的文本格式,就会出现某些列有值却读不出来.其实问题也很简单,如果知道问题所在的话.属性设置为"IMEX=1"即可. 代码如下: string strConn;        strConn = "Provider=M

Java 导入Excel文件到数据库

原文:http://www.jb51.net/article/44021.htm 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. (注:HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx Workbook wb = null; //当excel是200

Java 导入Excel (直接插入)

//配置 <!--pom.xml 需要导入poi包--> <!--excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version> </dependency> <dependency> <groupId>org.

java导入excel

package com.duosen.gate.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; im

导入EXCEL时的日期转换

1 /// <summary> 2 /// 读取EXCEL中的日期进行转换 3 /// </summary> 4 /// <param name="objValue"></param> 5 /// <returns></returns> 6 private DateTime ConvertExcelDateTime(object objValue) { 7 if (objValue is DateTime) 8 {

java 导入图片时忘了导入诊断报告,查询报告并将缺失的报告插入对应分类图片中

public void import2(){ TagImgFilter filterTg = new TagImgFilter(); //ImgCaseFilter filterC = new ImgCaseFilter(); //ImgCenterFilter filterImc = new ImgCenterFilter(); filterTg.setEq_typeId("cddec2677acf4e77b341a20850d94e00");//数据源tag_json filter