需要导入的包和 该例子读取的excel文件 在下面上传了,需要请下载: package excel; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.LinkedList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * 读取excel文件 * @author Jiacheng *Poi解析2003时使用的是HSSFCell,而2007的则是 XSSFCell,是完全不同的两套API 必须先要判断excel的类型,不过 HSSFWorkbook 和 XSSFWorkbook 实现的接口都是一样的Workbook,直接在实例化接口的时候有点区别其他时候没有任何差异。 */ public class ReadExcelUtil { public static List<List<Object>> readExcel(File file) throws IOException { String fileName = file.getName(); String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName .substring(fileName.lastIndexOf(".") + 1); if ("xls".equals(extension)) { return read2003Excel(file); } else if ("xlsx".equals(extension)) { return read2007Excel(file); } else { throw new IOException("不支持的文件类型"); } } /** * 读取 office 2003 excel * * @throws IOException * @throws FileNotFoundException */ private static List<List<Object>> read2003Excel(File file) throws IOException { List<List<Object>> list = new LinkedList<List<Object>>(); HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file)); HSSFSheet sheet = hwb.getSheetAt(0); Object value = null; HSSFRow row = null; HSSFCell cell = null; int counter = 0; for (int i = sheet.getFirstRowNum(); counter < sheet .getPhysicalNumberOfRows(); i++) { // if(i==0){ // //跳过第一行 // continue; // } row = sheet.getRow(i); List<Object> linked = new LinkedList<Object>(); for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) { cell = row.getCell(j); if (cell == null) { value="无";//导入不能为空 linked.add(value); //System.out.println(value); continue; } DecimalFormat df = new DecimalFormat("0");// 格式化 number String // 字符 SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd");// 格式化日期字符串 DecimalFormat nf = new DecimalFormat("0");// 格式化数字 switch (cell.getCellType()) { case XSSFCell.CELL_TYPE_STRING: value = cell.getStringCellValue(); //System.out.println(i + "行" + j + " 列 is String type" +" "+value); break; case XSSFCell.CELL_TYPE_NUMERIC: // System.out.println(i + "行" + j // + " 列 is Number type ; DateFormt:" // + cell.getCellStyle().getDataFormatString()); if ("@".equals(cell.getCellStyle().getDataFormatString())) { value = df.format(cell.getNumericCellValue()); } else if ("General".equals(cell.getCellStyle() .getDataFormatString())) { value = nf.format(cell.getNumericCellValue()); } else { value = sdf.format(HSSFDateUtil.getJavaDate(cell .getNumericCellValue())); } break; case XSSFCell.CELL_TYPE_BOOLEAN: value = cell.getBooleanCellValue(); break; case XSSFCell.CELL_TYPE_BLANK: value = ""; break; default: value = cell.toString(); } if (value == null || "".equals(value)) { value="无";//导入不能为空 } //System.out.println(value); linked.add(value); } list.add(linked); } return list; } /** * 读取Office 2007 excel * */ private static List<List<Object>> read2007Excel(File file) throws IOException { List<List<Object>> list = new LinkedList<List<Object>>(); // 构造 XSSFWorkbook 对象,strPath 传入文件路径 XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file)); // 读取第一章表格内容 XSSFSheet sheet = xwb.getSheetAt(0); Object value = null; XSSFRow row = null; XSSFCell cell = null; int counter = 0; for (int i = sheet.getFirstRowNum(); counter < sheet .getPhysicalNumberOfRows(); i++) { if(i==0){ //跳过第一行 continue; } row = sheet.getRow(i); if (row == null) { break; } List<Object> linked = new LinkedList<Object>(); for (int j = row.getFirstCellNum(); j <row.getLastCellNum(); j++) { cell = row.getCell(j); if (cell == null) { value="无";//导入不能为空 linked.add(value); //System.out.println(value); continue; } //System.out.println(value); DecimalFormat df = new DecimalFormat("0");// 格式化 number String // 字符 SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd");// 格式化日期字符串 DecimalFormat nf = new DecimalFormat("0");// 格式化数字 switch (cell.getCellType()) { case XSSFCell.CELL_TYPE_STRING: //System.out.println(i + "行" + j + " 列 is String type"); value = cell.getStringCellValue(); break; case XSSFCell.CELL_TYPE_NUMERIC: // System.out.println(i + "行" + j // + " 列 is Number type ; DateFormt:" // + cell.getCellStyle().getDataFormatString()); if ("@".equals(cell.getCellStyle().getDataFormatString())) { value = df.format(cell.getNumericCellValue()); } else if ("General".equals(cell.getCellStyle() .getDataFormatString())) { value = nf.format(cell.getNumericCellValue()); } else { value = sdf.format(HSSFDateUtil.getJavaDate(cell .getNumericCellValue())); } break; case XSSFCell.CELL_TYPE_BOOLEAN: value = cell.getBooleanCellValue(); break; case XSSFCell.CELL_TYPE_BLANK://空格,空白 value = ""; break; default: value = cell.toString(); } if (value == null || "".equals(value)) { value="无";//导入不能为空 } //System.out.println(value); linked.add(value); } list.add(linked); } return list; } public static void main(String[] args) { try { int count=0; long time1=System.currentTimeMillis(); List<List<Object>> list=readExcel(new File("D:\\test.xlsx")); System.out.println("读取花费时间:"+(System.currentTimeMillis()-time1)/1000.0); for(List<Object> list2 :list){ count++; for(int i=0;i<list2.size();i++){ System.out.print(list2.get(i)+" "); } System.out.println("第"+count+"组"); } System.out.println("ok!"); // readExcel(new File("D:\\test.xls")); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
POI读取excel的例子
实现了JAVA 窗口,读取EXCEL文件,用poi读取EXCEL内容只是一个小例子
poi读取excel2007和2003兼容工具例子.利用简单工厂方法
利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...
第一次用jxl.jar读取excel的例子, 高手勿看。
通过对excel某一行某一列的读取,和某个文件夹路径中的文件进行文件名匹配
poi读取Exceljar包和例子 poi-2.5.1-final-20040804.jar poi-contrib-2.5.1-final-20040804.jar poi-scratchpad-2.5.1-final-20040804.jar ReadXL.java
poi excel通过模板导出excel表格 且带有公式 导出的excel表格里面的公式均可计算 有简单的公式也有难的公司 在此例子里面都可以跟着excel一起到处并可计算
一个很不错的入门级的poi小实例,想要这方面资源的童鞋注意了啊,绝对不能错过哦 。。。。。
本篇文章主要介绍了java的poi技术读取和导入Excel实例,报表输出是Java应用开发中经常涉及的内容,有需要的可以了解一下。
Java基于POI的导入导出excel功能,附带测试功能,项目基于Maven,导入即可用,带测试Main方法提供例子。 用于导入导出Excel的Util包,基于Java的POI。可将List导出成Excel,或读取Excel成List、Map,Object>,很方便...
一个简单的基于Android读取xls和xlsx文件的例子,采用的POI。
该资源是利用poi技术进行excel的读取导出等
java poi读取excel主要有两种方式 1,user mode 2,event user mode 第一个将excel一次过读进内存,使用方便,但是占用内存,会出现out of memory的情况。 第二个将会边读取边进行操作,不会一次过读入内存,但是...
里面java利用POI是导入导出excel表的例子。 (注意:HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现 XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现 )
用它可以使用 Java 读取和创建, 修改 MS Excel 文件. 而且, 还可以使用 Java 读取和创建 MS Word 和 MSPowerPoint 文件。Apache POI 提供 Java 操作 Excel 解决方案(适用于 Excel97-2008)。 2 Apache POI的组件 ...
本资源分别用了四种方式:原生DOM、JDOM、SAX和DOM4J实现的对xml文件的读取,另外还有对excel文件读取与保存的例子,并且资源带有jdom.jar、poi-ooxml.jar和poi-3.7jar包
POI库是Apache提供的用于在Windows下读写各类微软Office文档的Java库,这里我们就来看一下Java使用Apache POI库读取Excel表格文档的示例: