开发者博客:www.developsearch.com
需要jar包 ,至少要这几种
poi-3.7-20101029.jar
poi-ooxml-3.7-20101029.jar
poi-ooxml-schemas-3.7-20101029.jar
xmlbeans-2.3.0.jar
package com.yiwanj.core.util; 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; public class ExcelUtil { public static void main(String[] args) { File file = new File("D:\\Tomcat 6\\webapps\\export\\upload\\Book1.xlsx"); try { List list = readExcel(file); for (int i = 0; i < list.size(); i++) { List one = (List) list.get(i); System.out.println(one.get(0)); System.out.println(one.get(1)); System.out.println(one.get(2)); System.out.println(one.get(3)); } } catch (IOException e) { e.printStackTrace(); } } /** * 对外提供读取excel 的方法 * */ 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; for(int i = sheet.getFirstRowNum();i<= sheet.getPhysicalNumberOfRows();i++){ row = sheet.getRow(i); if (row == null) { continue; } List<Object> linked = new LinkedList<Object>(); for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) { cell = row.getCell(j); if (cell == null) { continue; } DecimalFormat df = new DecimalFormat("0");// 格式化 number String 字符 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串 DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字 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: System.out.println(i+"行"+j+" 列 is Boolean type"); value = cell.getBooleanCellValue(); break; case XSSFCell.CELL_TYPE_BLANK: System.out.println(i+"行"+j+" 列 is Blank type"); value = ""; break; default: System.out.println(i+"行"+j+" 列 is default type"); value = cell.toString(); } if (value == null || "".equals(value)) { continue; } 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; for (int i = sheet.getFirstRowNum(); i <= sheet .getPhysicalNumberOfRows(); i++) { row = sheet.getRow(i); if (row == null) { continue; } List<Object> linked = new LinkedList<Object>(); for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) { cell = row.getCell(j); if (cell == null) { continue; } DecimalFormat df = new DecimalFormat("0");// 格式化 number String 字符 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串 DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字 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: System.out.println(i+"行"+j+" 列 is Boolean type"); value = cell.getBooleanCellValue(); break; case XSSFCell.CELL_TYPE_BLANK: System.out.println(i+"行"+j+" 列 is Blank type"); value = ""; break; default: System.out.println(i+"行"+j+" 列 is default type"); value = cell.toString(); } if (value == null || "".equals(value)) { continue; } linked.add(value); } list.add(linked); } return list; } }
相关推荐
通过以上步骤,你可以用Java有效地读取Excel文件,无论它们是2003的.xls格式还是2007及以后的.xlsx格式。Apache POI提供了丰富的API,允许你进行复杂的操作,如样式设置、公式计算、图表处理等,满足各种业务需求。
在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有两种主要版本,即2003年的.xls格式和2007年及以后的.xlsx格式。为了兼容这两种格式,Java引入了Apache POI库,这是...
【Java读取Excel兼容2003和2007】 在Java中处理Excel文件时,我们需要确保代码能够兼容Microsoft Office的两个主要版本:2003和2007。这两个版本的Excel文件格式有所不同,2003使用的是.BIFF8格式(HSSF),而2007及...
总结,Java读取Excel并进行数据库建库建表及生成Java实体的过程涉及了Apache POI库的使用、数据库操作和源代码生成。理解这些步骤可以帮助你有效地处理类似的任务,提高开发效率。在实际应用中,你还需要考虑错误...
在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有两种主要版本,即2003的.xls(基于BIFF格式)和2007及以后版本的.xlsx(基于OpenXML标准)。为了确保程序能够...
通过以上知识点的学习和实践,你可以掌握在Java中读取Excel文件,包括对Excel 2003和2007格式的兼容性处理。在实际应用中,可以根据需求进一步扩展功能,如写入Excel、合并单元格、格式化数据等。
在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有多种,包括早期的.XLS(Excel 2003及更早版本)和后来的.XLSX(Excel 2007及更高版本)。为了在Java中兼容这两种...
本篇将详细介绍如何使用Java读取Excel所有页的数据,以及可能出现的问题和解决策略。 首先,我们需要引入能够处理Excel文件的库。Apache POI 是一个广泛使用的Java API,它允许程序员创建、修改和显示Microsoft ...
在这个"poi读取excel2007和2003兼容工具例子"中,我们将探讨如何使用POI来读取不同版本的Excel文件,特别是Excel 2003(.xls)和Excel 2007及更高版本(.xlsx)。 1. **Apache POI库**:Apache POI是Apache软件基金...
在本项目中,我们关注的是“java编写的兼容2003、2007Excel文件读取工程”。这个工程的目标是实现一个Java程序,能够读取Microsoft Excel的两种主要格式:.xls(用于2003及更早版本)和.xlsx(用于2007及更高版本)...
/*** * 读取Excel文件里数据... * 读取Excel的兼容性/03/07以上 * 参数一读取所需的文件对象 * 参数二自定义需要对应实体对象相关的属性 * 参数三将数据转化成对应的class实体对象 * 参数四从文档的第几行读取 */
### Java读取Excel POI方法详解 #### 一、POI简介及背景 Apache POI 是一个用于处理 Microsoft Office 格式文件的开源库,它提供了读取、写入和修改这些文件的功能。POI 项目中最常用的部分是 HSSF 和 XSSF,分别...
这篇博客“通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)”正是介绍了如何使用Apache POI库来处理不同版本的Excel文件。 Apache POI 提供了两个主要的API来处理Excel文件:HSSF(Horrible Spreadsheet ...
本文档介绍如何使用Java语言读取Excel文件中的数据。由于文档中部分内容是通过OCR扫描而来,可能存在一些技术性识别错误和不完整情况,以下是根据提供的内容提炼的知识点整理。 首先,文档提到了读取Excel文件所需...
总结起来,Java读取Excel数据涉及的主要知识点有:Apache POI库的使用,包括`.xls`和`.xlsx`格式的处理;Android环境下的兼容性考虑,可能需要使用`jxl`库;以及如何通过Java代码遍历Excel文件的行和单元格,获取并...
在“poi读取excel文件实例”中,我们将讨论如何使用Apache POI API来读取和操作Excel 2007文件。以下是一些关键知识点: 1. **创建工作簿对象**:首先,你需要通过`WorkbookFactory`类的`create()`方法打开或创建一...
2. **读取Excel文件**: 使用HSSFWorkbook处理.xls文件,XSSFWorkbook处理.xlsx文件。以下是一个简单的读取示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss....
在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件主要有两种格式:`.xls`(旧版的BIFF格式,适用于Excel 2003及更早版本)和`.xlsx`(新的OpenXML格式,适用于Excel ...
综上所述,Java读取大型Excel文件涉及的关键点在于选择合适的API,采用分块读取、迭代器、错误处理、性能优化和可能的数据库集成。理解并应用这些技术将帮助你在处理大数据量的Excel文件时更加得心应手。