需要导入的包和 该例子读取的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 POI 读取 Excel JAVA POI 是 Apache 的一个子项目,提供了一...本文总结了 JAVA POI 读取 Excel 的知识点,包括 POI 简介、Excel 文件的组织形式、POI 的主要对象、使用 POI 读取 Excel 和使用 POI 写入 Excel。
在Java编程中,Apache POI库是一个非常流行的工具,它允许开发者读取、创建和修改Microsoft Office格式的文件,其中包括Excel。本篇文章将详细介绍如何利用Apache POI来生成Excel文件。 首先,Apache POI是一个开源...
在“poi读取excel文件实例”中,我们将讨论如何使用Apache POI API来读取和操作Excel 2007文件。以下是一些关键知识点: 1. **创建工作簿对象**:首先,你需要通过`WorkbookFactory`类的`create()`方法打开或创建一...
Apache POI 是一个流行的开源库,它允许开发者使用 Java 来读写 Microsoft Office 格式的文件,其中包括 Excel 工作簿(.xlsx 和 .xls 文件)。下面我们将深入探讨如何使用 Java POI 库来操作 Excel。 首先,我们...
Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作...
在Java开发中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel。本篇文章主要探讨如何利用POI在Excel单元格中添加超链接,并设置字体颜色。 首先,为了使用...
标题 "POI读取Excel带格式数据" 涉及到的是Apache POI库在Java中的使用,这个库允许开发者处理Microsoft Office格式的文件,包括Excel。Apache POI是一个开源项目,提供了API来读取、写入和修改Excel文档。在本场景...
这就是使用Apache POI在Java中读取Excel文件的基本流程。你可以根据需要扩展此基础,例如处理公式、样式、超链接等更复杂的功能。记住, POI库提供了丰富的API,能够满足各种复杂的Excel操作需求。在实际应用中,...
首先,要使用Apache POI读取XLSX文件,你需要确保引入了正确的依赖。Apache POI项目提供了多个组件,其中HSSF用于处理老版的BIFF格式(XLS),而XSSF则用于处理OOXML格式(XLSX)。因此,你需要在你的项目中包含以下...
在这个"poi读取excel2007和2003兼容工具例子"中,我们将探讨如何使用POI来读取不同版本的Excel文件,特别是Excel 2003(.xls)和Excel 2007及更高版本(.xlsx)。 1. **Apache POI库**:Apache POI是Apache软件基金...
Java POI是Apache软件基金会下的一个开源项目,主要用于读写Microsoft Office格式的文件,特别是Excel。在Java开发中,当你需要处理Excel数据时,POI库是一个强大的工具。本压缩包包含了一些关键资源,帮助你理解和...
在"poi读取excel并校验小例子"中,我们可能首先创建一个`XSSFWorkbook`实例来打开Excel文件,然后通过工作表索引获取对应的`XSSFSheet`对象。例如: ```java FileInputStream fis = new FileInputStream("example....
本篇文章将深入探讨如何使用Java实现Excel文件的上传和读取,重点关注`MultiFile`转换为`File`以及处理多Sheet页的技巧。 首先,我们需要了解Java中处理Excel的库。Apache POI是一个广泛使用的开源库,它提供了API...
描述中提到了"poi_3.17.jar poi_3.15.jar",这两个版本都是Apache POI库的一部分,它们提供了对Excel文件的读写支持。其中,poi_3.17.jar是较新的版本,可能包含了更多优化和错误修复。同时,还提到了"jxl.jar",这...
Java的Apache POI库是一个强大的工具,用于在服务器端生成、读取和修改Microsoft Office文件,特别是Excel文档。POI项目始于Apache的Jakarta子项目,其目标是处理OLE2对象,尤其是MS Excel(97-2002)文件。HSSF接口...
本主题将深入探讨如何使用POI读取.xls(BIFF8格式,Excel 97-2003)和.xlsx(OOXML格式,Excel 2007及以上版本)两种不同格式的Excel文件。 首先,我们需要导入必要的库。在上述的文件列表中,我们看到有poi-3.9....
jxl是一个流行的、免费的Java库,用于读取和写入Microsoft Excel格式的文件。在这个简单的例子中,我们将探讨如何使用jxl.jar来读取Excel数据,这对于初学者来说是一个很好的起点。 首先,你需要将jxl.jar添加到你...