`

JAVA读取Excel兼容2003、2007

    博客分类:
  • Java
阅读更多
import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

 

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;

 

/**

 * @描述:测试excel读取

 * 导入的jar包

 * poi-3.8-beta3-20110606.jar

 * poi-ooxml-3.8-beta3-20110606.jar

 * poi-examples-3.8-beta3-20110606.jar

 * poi-excelant-3.8-beta3-20110606.jar

 * poi-ooxml-schemas-3.8-beta3-20110606.jar

 * poi-scratchpad-3.8-beta3-20110606.jar

 * xmlbeans-2.3.0.jar

 * dom4j-1.6.1.jar

 * jar包官网下载地址:http://poi.apache.org/download.html

 * 下载poi-bin-3.8-beta3-20110606.zipp

 * @时间:2011-8-9 下午03:15:15

 */

public class WDWExcelTest {

/** 总行数 */

private int totalRows = 0;

/** 总列数 */

private int totalCells = 0;

/** 错误信息 */

private String errorInfo;

 

/** 构造方法 */

public WDWExcelTest() {

}

 

/**

* @描述:得到总行数

* @时间:2011-8-9 下午04:27:34

* @参数:@return

* @返回值:int

*/

public int getTotalRows() {

return totalRows;

}

 

/**

* @描述:得到总列数

* @时间:2011-8-9 下午04:27:45

* @参数:@return

* @返回值:int

*/

public int getTotalCells() {

return totalCells;

}

    

/**

* @描述:得到错误信息

* @时间:2011-8-9 下午04:28:17

* @参数:@return

* @返回值:String

*/

public String getErrorInfo() {

return errorInfo;

}



/**

* @描述:验证excel文件

* @时间:2011-8-9 下午04:06:47

* @参数:@param fileName

* @参数:@return

* @返回值:boolean

*/

public boolean validateExcel(String fileName){

/** 检查文件名是否为空或者是否是Excel格式的文件 */

if (fileName == null || !( WDWUtil.isExcel2003(fileName) || WDWUtil.isExcel2007(fileName) ) ) {

errorInfo = "文件名不是excel格式";

return false;

}

/** 检查文件是否存在 */

File file = new File(fileName);

if (file == null || !file.exists()) {

errorInfo = "文件不存在";

return false;

}

return true;

}

/**

* @描述:根据文件名读取excel文件

* @时间:2011-8-9 下午03:17:45

* @参数:@param fileName

* @参数:@return

* @返回值:List

*/

public List<List<String>> read(String fileName) {

List<List<String>> dataLst = new ArrayList<List<String>>();

InputStream is = null;

try {

/** 验证文件是否合法 */

if(!validateExcel(fileName)){

System.out.println(errorInfo);

return null;

}


/** 判断文件的类型,是2003还是2007 */

boolean isExcel2003 = true;

if (WDWUtil.isExcel2007(fileName)) {

isExcel2003 = false;

}

/** 调用本类提供的根据流读取的方法 */

File file = new File(fileName);

is = new FileInputStream(file);

dataLst = read(is, isExcel2003);

is.close();

} catch (Exception ex) {

ex.printStackTrace();

} finally {

if(is != null){

try {

is.close();

} catch (IOException e) {

is = null;

e.printStackTrace();

}

}

}

/** 返回最后读取的结果 */

return dataLst;

}

 

/**

* @描述:根据流读取Excel文件

* @时间:2011-8-9 下午04:12:41

* @参数:@param inputStream

* @参数:@param isExcel2003

* @参数:@return

* @返回值:List

*/

public List<List<String>> read(InputStream inputStream, boolean isExcel2003) {

List<List<String>> dataLst = null;

try {

/** 根据版本选择创建Workbook的方式 */

Workbook wb = isExcel2003 ? new HSSFWorkbook(inputStream) : new XSSFWorkbook(inputStream);

dataLst = read(wb);

} catch (IOException e) {

e.printStackTrace();

}

return dataLst;

}

 


/**

* @描述:读取数据

* @时间:2011-8-9 下午04:37:25

* @参数:@param wb

* @参数:@return

* @返回值:List<List<String>>

*/

private List<List<String>> read(Workbook wb) {

List<List<String>> dataLst = new ArrayList<List<String>>();

/** 得到第一个shell */

Sheet sheet = wb.getSheetAt(0);

/** 得到Excel的行数 */

this.totalRows = sheet.getPhysicalNumberOfRows();

/** 得到Excel的列数 */

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;

}

List<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;

}

/** 处理Excel的字符串 */

cellValue = cell.getStringCellValue();

rowLst.add(cellValue);

}

/** 保存第r行的第c列 */

dataLst.add(rowLst);

}

return dataLst;

}

 

 

/**

* @描述:main测试方法

* @时间:2011-8-9 下午04:31:35

* @参数:@param args

* @参数:@throws Exception

* @返回值:void

*/

public static void main(String[] args) throws Exception {

WDWExcelTest poi = new WDWExcelTest();

//List<List<String>> list = poi.read("d:/aaa.xls");

List<List<String>> list = poi.read("d:/aab.xlsx");

if(list != null){

for(int i = 0, ilen = list.size(); i < ilen; i++){

System.out.println("第" + (i + 1) + "行");

List<String> cellList = list.get(i);

for(int j = 0, jlen = cellList.size(); j < jlen; j++){

System.out.print("    第" + (j + 1) + "列值:");

System.out.println(cellList.get(j));

}

}

}

}

}

 

 

/**

 * @描述:工具类

 * @时间:2011-8-9 下午04:28:43

 */

class WDWUtil{


/**

* @描述:是否是2003的excel,返回true是2003

* @时间:2011-8-9 下午03:20:49

* @参数:@param fileName

* @参数:@return

* @返回值:boolean

*/

public static boolean isExcel2003(String fileName){

return fileName.matches("^.+\\.(?i)(xls)$");

}

/**

* @描述:是否是2007的excel,返回true是2007

* @时间:2011-8-9 下午03:21:37

* @参数:@param fileName

* @参数:@return

* @返回值:boolean

*/

public static boolean isExcel2007(String fileName){

return fileName.matches("^.+\\.(?i)(xlsx)$");

}

}
分享到:
评论

相关推荐

    java读取excel文件,兼容2007

    通过以上步骤,你可以用Java有效地读取Excel文件,无论它们是2003的.xls格式还是2007及以后的.xlsx格式。Apache POI提供了丰富的API,允许你进行复杂的操作,如样式设置、公式计算、图表处理等,满足各种业务需求。

    java 读取Excel兼容2003,2007项目

    通过以上知识点的学习和实践,你可以掌握在Java中读取Excel文件,包括对Excel 2003和2007格式的兼容性处理。在实际应用中,可以根据需求进一步扩展功能,如写入Excel、合并单元格、格式化数据等。

    java读取excel(兼容2003和2007)[定义].pdf

    【Java读取Excel兼容2003和2007】 在Java中处理Excel文件时,我们需要确保代码能够兼容Microsoft Office的两个主要版本:2003和2007。这两个版本的Excel文件格式有所不同,2003使用的是.BIFF8格式(HSSF),而2007及...

    java 读取 Excel兼容2003,2007

    在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有多种,包括早期的.XLS(Excel 2003及更早版本)和后来的.XLSX(Excel 2007及更高版本)。为了在Java中兼容这两种...

    java读取excel(兼容2003和2007)

    在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有两种主要版本,即2003年的.xls格式和2007年及以后的.xlsx格式。为了兼容这两种格式,Java引入了Apache POI库,这是...

    java 读取 Excel 读取 兼容2003,2007

    以下将详细介绍如何使用Java来读取Excel文件,同时兼容2003和2007版。 1. Apache POI 库 Apache POI 是一个开源项目,它为Microsoft Office格式提供了一个强大的API。对于Excel文件,POI提供了HSSF(Horrible ...

    JAVA读取Excel,建库建表,并生成java实体

    总结,Java读取Excel并进行数据库建库建表及生成Java实体的过程涉及了Apache POI库的使用、数据库操作和源代码生成。理解这些步骤可以帮助你有效地处理类似的任务,提高开发效率。在实际应用中,你还需要考虑错误...

    java编写的兼容2003、2007Excel文件读取工程

    在本项目中,我们关注的是“java编写的兼容2003、2007Excel文件读取工程”。这个工程的目标是实现一个Java程序,能够读取Microsoft Excel的两种主要格式:.xls(用于2003及更早版本)和.xlsx(用于2007及更高版本)...

    java代码读取excel文件,同时兼容2003和2007

    在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有两种主要版本,即2003的.xls(基于BIFF格式)和2007及以后版本的.xlsx(基于OpenXML标准)。为了确保程序能够...

    Java解析Excel兼容2003和2007(有实例和类包)

    2. **读取Excel文件**: 使用HSSFWorkbook处理.xls文件,XSSFWorkbook处理.xlsx文件。以下是一个简单的读取示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss....

    java读取excel所有页的数据

    本篇将详细介绍如何使用Java读取Excel所有页的数据,以及可能出现的问题和解决策略。 首先,我们需要引入能够处理Excel文件的库。Apache POI 是一个广泛使用的Java API,它允许程序员创建、修改和显示Microsoft ...

    poi读取excel2007和2003兼容工具例子

    在这个"poi读取excel2007和2003兼容工具例子"中,我们将探讨如何使用POI来读取不同版本的Excel文件,特别是Excel 2003(.xls)和Excel 2007及更高版本(.xlsx)。 1. **Apache POI库**:Apache POI是Apache软件基金...

    读取Excel并转化成对象

    /*** * 读取Excel文件里数据... * 读取Excel的兼容性/03/07以上 * 参数一读取所需的文件对象 * 参数二自定义需要对应实体对象相关的属性 * 参数三将数据转化成对应的class实体对象 * 参数四从文档的第几行读取 */

    java读取excel poi 方法

    ### Java读取Excel POI方法详解 #### 一、POI简介及背景 Apache POI 是一个用于处理 Microsoft Office 格式文件的开源库,它提供了读取、写入和修改这些文件的功能。POI 项目中最常用的部分是 HSSF 和 XSSF,分别...

    java中poi读写excel封装工具类(兼容office2003和2007等版本)

    它不仅支持旧版的Excel文件格式(.xls,用于Office 2003及更早版本),还支持新版本的Excel文件格式(.xlsx,自Office 2007起)。以下是对"java中poi读写excel封装工具类"这一主题的详细解释。 1. **Apache POI介绍...

    Npoi读取excel2003和2007到datatable

    要读取Excel到DataTable,首先需要创建一个DataTable实例,然后遍历Excel文件中的每个工作表。对于Excel 2003,使用HSSFWorkbook,对于Excel 2007及以上,使用XSSFWorkbook。这里的关键在于,可以通过文件扩展名或...

    利用java读取Excel中的数据的方法.pdf

    本文档介绍如何使用Java语言读取Excel文件中的数据。由于文档中部分内容是通过OCR扫描而来,可能存在一些技术性识别错误和不完整情况,以下是根据提供的内容提炼的知识点整理。 首先,文档提到了读取Excel文件所需...

    java读取数据量大的excel文件(2003及2007)

    综上所述,Java读取大型Excel文件涉及的关键点在于选择合适的API,采用分块读取、迭代器、错误处理、性能优化和可能的数据库集成。理解并应用这些技术将帮助你在处理大数据量的Excel文件时更加得心应手。

    Java读取Excel表格数据时(.xls、.xlsx 格式),需要引用的jar包

    总结起来,Java读取Excel数据涉及的主要知识点有:Apache POI库的使用,包括`.xls`和`.xlsx`格式的处理;Android环境下的兼容性考虑,可能需要使用`jxl`库;以及如何通过Java代码遍历Excel文件的行和单元格,获取并...

    java解析获取Excel中的数据--同时兼容2003及2007

    在本文中,我们将深入探讨如何使用Java来解析并获取Excel中的数据,同时确保兼容2003版(.xls)和2007版及以上(.xlsx)的文件格式。这两个版本的文件格式不同,因此处理方式也会有所差异。 首先,对于2003版的...

Global site tag (gtag.js) - Google Analytics