`

poi读取excel文件

阅读更多

 方法1:(转自:http://www.blogjava.net/hwpok/archive/2010/01/20/310263.html

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** *//** * <ul> * <li>Title:[POI基础上的Excel数据读取工具]</li> * <li>Description: [支持Excell2003,Excell2007,自动格式化数值型数据,自动格式化日期型数据]</li> * <li>Copyright 2009 RoadWay Co., Ltd.</li> * <li>All right reserved.</li> * <li>Created by [惠万鹏] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * * <li>所需Jar包列表</li> * <li>poi-3.6-20091214.jar</li> * <li>poi-contrib-3.6-20091214.jar</li> * <li>poi-examples-3.6-20091214.jar</li> * <li>poi-ooxml-3.6-20091214.jar</li> * <li>poi-ooxml-schemas-3.6-20091214.jar</li> * <li>poi-scratchpad-3.6-20091214.jar</li> * <li>xmlbeans-2.3.0.jar</li> * <ul> * * @version 1.0 */ public class POIExcelUtil { /** *//** 总行数 */ private int totalRows = 0; /** *//** 总列数 */ private int totalCells = 0; /** *//** 构造方法 */ public POIExcelUtil() {} /** *//** * <ul> * <li>Description:[根据文件名读取excel文件]</li> * <li>Created by [Huyvanpull] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * <ul> * * @param fileName * @return * @throws Exception */ public List<ArrayList<String>> read(String fileName) { List<ArrayList<String>> dataLst = new ArrayList<ArrayList<String>>(); /** *//** 检查文件名是否为空或者是否是Excel格式的文件 */ if (fileName == null || !fileName.matches("^.+\\.(?i)((xls)|(xlsx))$")) { return dataLst; } boolean isExcel2003 = true; /** *//** 对文件的合法性进行验证 */ if (fileName.matches("^.+\\.(?i)(xlsx)$")) { isExcel2003 = false; } /** *//** 检查文件是否存在 */ File file = new File(fileName); if (file == null || !file.exists()) { return dataLst; } try { /** *//** 调用本类提供的根据流读取的方法 */ dataLst = read(new FileInputStream(file), isExcel2003); } catch (Exception ex) { ex.printStackTrace(); } /** *//** 返回最后读取的结果 */ return dataLst; } /** *//** * <ul> * <li>Description:[根据流读取Excel文件]</li> * <li>Created by [Huyvanpull] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * <ul> * * @param inputStream * @param isExcel2003 * @return */ public List<ArrayList<String>> read(InputStream inputStream, boolean isExcel2003) { List<ArrayList<String>> dataLst = null; try { /** *//** 根据版本选择创建Workbook的方式 */ Workbook wb = isExcel2003 ? new HSSFWorkbook(inputStream) : new XSSFWorkbook(inputStream); dataLst = read(wb); } catch (IOException e) { e.printStackTrace(); } return dataLst; } /** *//** * <ul> * <li>Description:[得到总行数]</li> * <li>Created by [Huyvanpull] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * <ul> * * @return */ public int getTotalRows() { return totalRows; } /** *//** * <ul> * <li>Description:[得到总列数]</li> * <li>Created by [Huyvanpull] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * <ul> * * @return */ public int getTotalCells() { return totalCells; } /** *//** * <ul> * <li>Description:[读取数据]</li> * <li>Created by [Huyvanpull] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * <ul> * * @param wb * @return */ private List<ArrayList<String>> read(Workbook wb) { List<ArrayList<String>> dataLst = new ArrayList<ArrayList<String>>(); /** *//** 得到第一个shell */ Sheet sheet = wb.getSheetAt(0); this.totalRows = sheet.getPhysicalNumberOfRows(); if (this.totalRows >= 1 && sheet.getRow(0) != null) { this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells(); } /** *//** 循环Excel的行 */ for (int r = 0; r < this.totalRows; r++) { Row row = sheet.getRow(r); if (row == null) { continue; } ArrayList<String> rowLst = new ArrayList<String>(); /** *//** 循环Excel的列 */ for (short c = 0; c < this.getTotalCells(); c++) { Cell cell = row.getCell(c); String cellValue = ""; if (cell == null) { rowLst.add(cellValue); continue; } /** *//** 处理数字型的,自动去零 */ if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) { /** *//** 在excel里,日期也是数字,在此要进行判断 */ if (HSSFDateUtil.isCellDateFormatted(cell)) { cellValue = DateUtil.get4yMdHms(cell.getDateCellValue()); } else { cellValue = getRightStr(cell.getNumericCellValue() + ""); } } /** *//** 处理字符串型 */ else if (Cell.CELL_TYPE_STRING == cell.getCellType()) { cellValue = cell.getStringCellValue(); } /** *//** 处理布尔型 */ else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) { cellValue = cell.getBooleanCellValue() + ""; } /** *//** 其它的,非以上几种数据类型 */ else { cellValue = cell.toString() + ""; } rowLst.add(cellValue); } dataLst.add(rowLst); } return dataLst; } /** *//** * <ul> * <li>Description:[正确地处理整数后自动加零的情况]</li> * <li>Created by [Huyvanpull] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * <ul> * * @param sNum * @return */ private String getRightStr(String sNum) { DecimalFormat decimalFormat = new DecimalFormat("#.000000"); String resultStr = decimalFormat.format(new Double(sNum)); if (resultStr.matches("^[-+]?\\d+\\.[0]+$")) { resultStr = resultStr.substring(0, resultStr.indexOf(".")); } return resultStr; } /** *//** * <ul> * <li>Description:[测试main方法]</li> * <li>Created by [Huyvanpull] [Jan 20, 2010]</li> * <li>Midified by [modifier] [modified time]</li> * <ul> * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { List<ArrayList<String>> dataLst = new POIExcelUtil() .read("e:/Book1_shao.xls"); for (ArrayList<String> innerLst : dataLst) { StringBuffer rowData = new StringBuffer(); for (String dataStr : innerLst) { rowData.append(",").append(dataStr); } if (rowData.length() > 0) { System.out.println(rowData.deleteCharAt(0).toString()); } } } }

 

 

方法2:已通过测试

// 构造 XSSFWorkbook 对象,strPath 传入文件路径
XSSFWorkbook xwb = new XSSFWorkbook(fileName);

XSSFSheet sheet = null;
sheet = xwb.getSheet(sheetName);
//int num = xwb.getSheetIndex(sheetName);					
//sheet = xwb.getSheetAt(num);
}
// 定义 row、cell
XSSFRow row;
String cell;

// 循环输出表格中的内容
for (int i = sheet.getFirstRowNum(); i < sheet
		.getPhysicalNumberOfRows(); i++) {
	row = sheet.getRow(i);//获取行数据
	for (int j = row.getFirstCellNum(); j < row
			.getPhysicalNumberOfCells(); j++) {
		// 通过 row.getCell(j).toString() 获取单元格内容,
		cell = row.getCell(j).toString();//获取列数据
		System.out.print(cell + "\t");		
	}
	System.out.println("");
}

 

方法3:(若读取excel97---excel2003可试用以下方法,该方法已测试通过)

//该方法根据参数返回该页指定单元格中的内容
public String getExcelCellValueByParams(String fileName, String sheetName, String cellNum){//传入的参数依次为excel文件名、sheet页名称(或sheet页下标)、单元格位置(例如A1、B1)
	String cellValue = "";
	try {
		String n = fileName.substring(fileName.lastIndexOf(".")+1, fileName
				.length());
		if (n.equalsIgnoreCase("xls")) {
			jxl.Workbook wb = Workbook.getWorkbook(new File(fileName));
			Sheet rs = null;
			if (isNumeric(sheetName)) {//判断该参数是否为数字
				rs = wb.getSheet(Integer.valueOf(sheetName));// 根据下标读取sheet页
			} else {
				rs = wb.getSheet(sheetName);// 根据sheet名称读取该页
			}
			Cell cell = rs.getCell(cellNum);
			cellValue = cell.getContents();
		} 
	} catch (BiffException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
	return cellValue;
}

 

分享到:
评论

相关推荐

    java POI读取excel文件数据

    在这个场景中,我们将详细探讨如何使用Java POI读取Excel文件中的数据,包括获取总行数、列数、单元格内容、合并单元格、行高、列宽以及图片等信息。 首先,确保在项目中已经引入了Apache POI的依赖库。如果你使用...

    Java用poi读取excel文件

    Java 使用 POI 读取 Excel 文件 Java 是一种广泛使用的编程语言,而 Excel 是一种常用的电子表格软件。有时候,我们需要在 Java 程序中读取 Excel 文件的内容,例如将 Excel 表格中的数据导入到数据库中或者进行...

    POI 读取Excel文件

    本篇文章将详细介绍如何使用 POI 来读取 Excel 文件。 1. **安装与引入 POI** 在使用 POI 之前,你需要先将其添加到你的项目依赖中。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加以下依赖: ```xml ...

    poi读取excel文件实例(兼容excel2007)

    在“poi读取excel文件实例”中,我们将讨论如何使用Apache POI API来读取和操作Excel 2007文件。以下是一些关键知识点: 1. **创建工作簿对象**:首先,你需要通过`WorkbookFactory`类的`create()`方法打开或创建一...

    Java 新版POI 读取excel文件信息返回List<List<String>>对象,包含文件内公式处理

    基于新版本的POI编写的读取Excel文件数据的工具类,可根据绝对路径、File对象、InputSteam对象读取解析Excel文件内容,并返回List&lt;List&lt;String&gt;&gt;格式结果,其中包含对单元格公式的处理。

    Java用poi读取excel文件.docx

    Java 使用 POI 读取 Excel 文件 Java 中使用 Apache POI 库可以轻松地读取 Excel 文件,下面将详细介绍如何使用 POI 读取 Excel 文件。 什么是 Apache POI? Apache POI 是一个开源的 Java 库,由 Apache 软件...

    Java用poi读取excel文件.pdf

    Java 使用 Apache POI 读取 Excel 文件是一种常见的数据处理任务,尤其在数据分析、报表生成以及自动化测试等场景中。Apache POI 是一个流行的开源库,它允许开发者在 Java 应用程序中创建、修改和显示 Microsoft ...

    SpringBoot整合poi实现Excel文件的导入和导出.pdf

    // 使用POI读取Excel文件 XSSFWorkbook workbook = new XSSFWorkbook(is); XSSFSheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 for (Row row : sheet) { // 遍历行,处理每个单元格 for (Cell ...

    poi读取excel文件的完美jar包

    本教程将详细介绍如何使用Apache POI读取Excel文件,并提供一个适合导入数据库的解决方案。 首先,Apache POI提供了一个名为`HSSFWorkbook`的类,用于处理Excel的`.xls`格式(Excel 97-2007格式),而`XSSFWorkbook...

    java POI读取Excel文件基本用法Demo

    在本示例"Java POI读取Excel文件基本用法Demo"中,我们将深入探讨如何使用Java POI库来读取Excel文件。 首先,我们需要在项目中引入Apache POI的依赖。对于Maven项目,可以在pom.xml文件中添加以下依赖: ```xml ...

    使用POI解析excel文件并写入数据库

    使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...

    使用POI读取excel文件内容.docx

    总的来说,这段代码展示了如何使用Apache POI读取Excel文件,包括获取单元格内容、处理不同类型的单元格以及格式化日期。在实际项目中,你可以根据需求扩展这个类,例如添加写入Excel、处理多个工作表或支持.xlsx...

    java使用POI读取excel文件教程

    ### Java使用POI读取Excel文件教程 #### 一、Excel基础 Microsoft Excel 97 文件格式被称为 BIFF8(Binary Interchange File Format),而之后的版本如 Excel 2000、2002 和 2003 对此格式进行了微小的改进。这些...

    POI导出Excel文件

    总结起来,Apache POI为Java开发者提供了一种强大且灵活的方式来处理Excel文件,无论是通过Servlet从服务器生成文件,还是在本地通过main方法创建文件。理解如何使用POI库可以帮助你更好地集成Excel功能到你的Java...

    apache poi 读取Excel文件内容(2003,2007)

    这篇博文主要讲解如何使用Apache POI库来读取Excel文件的内容,无论是2003版的.XLS还是2007版及以后的.XLSX格式。 在Java编程中,Apache POI 提供了丰富的API,使得开发者可以方便地操作Excel文件。首先,我们需要...

    Java使用poi读取Excel文件例子

    除了基本的读取,Apache POI还支持对Excel文件进行更复杂的操作,例如修改单元格内容、添加新行和工作表、设置样式、公式计算等。在实际开发中,你可以根据需求灵活运用这些功能。 这个例子中的"源码"标签意味着你...

    POI读取EXCEL教程

    在Java编程环境中,如果你需要读取或写入Excel文件,POI 提供了强大的支持。本教程将深入讲解如何使用POI的HSSF组件来处理Excel 97-2003格式的文件(BIFF8格式)。 一、Excel基础 Excel 97 文件格式,也被称作BIFF8...

Global site tag (gtag.js) - Google Analytics