java自定义jar包读取Excel(包含2003和2007)数据,并举例说明

用java自定义jar包读取excel数据支持excel2007和excel2003

在http://download.csdn.net/detail/u010792467/8079355下载所需要的包

如果需要excel2003和excel2007文件可以去

http://download.csdn.net/detail/u010792467/8072009下载

在http://download.csdn.net/detail/u010792467/8079345下载工程

自定义jar包运用举例

<span style="font-size:18px;">package com.readExcel;

import java.util.List;

import Excel.ImportExeclTool;

public class exceltest {
	public static void main(String[] args) {
//		String filePath = "D:\\excel\\EXCEL2007测试.xlsx";
		 String filePath="D:\\excel\\EXCEL2003测试.xls";
		ImportExeclTool impexcel = new ImportExeclTool();
		// 全部sheet页内容
		// List<List<String>> list= impexcel.readExcel(filePath);
		// filePath excel文件路径
		// 1 代表第一个sheet页 2 代表第一个sheet页...
		List<List<String>> list = impexcel.readExcel(filePath, 1);
		if (list != null) {

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

				System.out.print("第" + (i) + "行");

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

				for (String s : listCell) {
					System.out.print(" " + s);
				}
				System.out.println();

			}

		}
		System.out.println("运行完成");
	}
}
</span>

自定义jar包源码

<span style="font-size:18px;">package Excel;

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.HSSFCell;
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;

public class ImportExeclTool {
	private String errorInfo;
	private static int readSheet = 0;
	private static boolean readSheetNum = false;
	private static boolean isGtSheetNum = false;

	public boolean validateExcel(String filePath) {

		if (filePath == null
				|| !(is2003Excel(filePath) || is2007Excel(filePath))) {

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

			return false;
		}

		File file = new File(filePath);

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

			errorInfo = "excel文件不存在";

			return false;

		}

		return true;

	}

	public List<List<String>> readExcel(String filePath) {

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

		InputStream is = null;

		try {

			if (!validateExcel(filePath)) {

				System.out.println();
				List<String> list3 = new ArrayList<String>();
				list3.add(errorInfo);
				dataList.add(list3);
				return dataList;

			}

			boolean is2003Excel = true;

			if (is2007Excel(filePath)) {

				is2003Excel = false;
			}

			File file = new File(filePath);

			is = new FileInputStream(file);

			dataList = readFile(is, is2003Excel);

			is.close();

		} catch (Exception ex) {

			ex.printStackTrace();

		} finally {

			if (is != null) {

				try {

					is.close();

				} catch (IOException e) {

					is = null;

					e.printStackTrace();

				}

			}

		}

		return dataList;

	}

	public List<List<String>> readFile(InputStream inputStream,
			boolean is2003Excel) {

		List<List<String>> dataLists = null;

		try {

			Workbook wb = null;

			if (is2003Excel) {
				wb = new HSSFWorkbook(inputStream);
			} else {
				wb = new XSSFWorkbook(inputStream);
			}
			int sheetNum = sheetCirculation(wb);
			if (readSheet >= sheetNum) {
				List<String> list2 = new ArrayList<String>();
				list2.add("输入页数大于实际sheet页数!!!");
				List list4 = new ArrayList();
				list4.add(list2);
				this.isGtSheetNum = true;
				return list4;
			}
			List<List<String>> dataList = new ArrayList<List<String>>();
			if (readSheetNum) {
				dataLists = read(dataList, wb, readSheet);
			} else {
				for (int i = 0; i < sheetNum; i++) {
					dataLists = read(dataList, wb, i);
				}
			}

		} catch (IOException e) {

			e.printStackTrace();

		}

		return dataLists;

	}

	private List<List<String>> read(List<List<String>> dataList, Workbook wb,
			int sheets) {
		int totalRows = 0;
		int totalCells = 0;

		Sheet sheet = wb.getSheetAt(sheets);

		totalRows = sheet.getPhysicalNumberOfRows();

		if (totalRows >= 1 && sheet.getRow(0) != null) {

			totalCells = sheet.getRow(0).getPhysicalNumberOfCells();

		}
		for (int r = 0; r < totalRows; r++) {

			Row row = sheet.getRow(r);

			if (row == null) {

				continue;

			}

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

			for (int c = 0; c < totalCells; c++) {

				Cell cell = row.getCell(c);

				String cellValue = "";

				if (null != cell) {
					switch (cell.getCellType()) {
					case HSSFCell.CELL_TYPE_NUMERIC: // 数字
						cellValue = cell.getNumericCellValue() + "";
						break;

					case HSSFCell.CELL_TYPE_STRING: // 字符串
						cellValue = cell.getStringCellValue();
						break;

					case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
						cellValue = cell.getBooleanCellValue() + "";
						break;

					case HSSFCell.CELL_TYPE_FORMULA: // 公式
						cellValue = cell.getCellFormula() + "";
						break;

					case HSSFCell.CELL_TYPE_BLANK: // 空值
						cellValue = "";
						break;

					case HSSFCell.CELL_TYPE_ERROR: // 故障
						cellValue = "非法字符";
						break;

					default:
						cellValue = "未知类型";
						break;
					}
				}

				rowDataList.add(cellValue);

			}
			dataList.add(rowDataList);

		}
		return dataList;

	}

	private int sheetCirculation(Workbook wb) {
		int sheetCount = -1;
		sheetCount = wb.getNumberOfSheets();
		return sheetCount;
	}

	public static boolean is2003Excel(String filePath) {

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

	}

	public static boolean is2007Excel(String filePath) {

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

	}

	public ImportExeclTool() {
	}

	public String getErrorInfo() {
		return errorInfo;
	}

	public List<List<String>> readExcel(String filePath, int num) {
		this.readSheet = num - 1;
		this.readSheetNum = true;
		if (num <= 0) {
			List list0 = new ArrayList();
			List list5 = new ArrayList();
			list0.add("excel必须大于0页!!!");
			list5.add(list0);
			return list5;
		}
		List<List<String>> list = readExcel(filePath);
		if (!this.isGtSheetNum && list.size() == 0) {
			List<String> list1 = new ArrayList<String>();
			list1.add("sheet页中数据为空!!!");
			list.add(list1);
		}
		return list;
	}
}
</span>

作者:儱剑阿攵

转载请注明链接:http://blog.csdn.net/awenluck/article/details/40442207

时间: 2024-10-25 03:00:43

java自定义jar包读取Excel(包含2003和2007)数据,并举例说明的相关文章

java自定义jar包让jmeter使用---给java参数化

上一篇文章中,提到怎么生成jar包让jmeter使用,这次我们来试试做参数,因为发现调包的时候其实更多还是参数化,那么开始改造吧 1.在httpclientpost这个类中替换参数,且打印参数 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; impo

Java使用poi包读取Excel文档

项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <gr

(转)java 从jar包中读取资源文件

(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java

Java生成jar包\打包\Export

本文介绍一下如何通过Eclipse将自己的项目打包成jar 1.项目上右键单击 Export 2.选择 Java - JAR file - [next >] 3.进入jar包的配置界面,在这里勾选你想导出的jar所包含的文件 Export generated class files and resources导出时包含class文件和其他资源资源 Export all output folders for checked projects导出时包含项目的所有文件夹 Export Java sou

java编程之POI读取excel表格的内容

07版本的excel需要另外加一个jar包.xbean.jar的jar包 读取代码模板.利用模板介绍读取excel的一些poi的api这是重点 1 /** 2 * 读取excel文件 3 * @Title: readExcel 4 * @Description: TODO(这里用一句话描述这个方法的作用) 5 * @author 尚晓飞 6 * @date 2014-11-10 上午8:58:01 7 * @param readPath 读取电脑硬盘上某个excel的绝对路径 例如:C://20

java的poi技术读取Excel[2003-2007,2010]

这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术 :java的jxl技术导入Excel  下面是本文的项目结构: 项目中所需要的jar文件: 所用的Excel数据(2003-2007,2010都是一

java的poi技术读取Excel数据

这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术 :java的jxl技术导入Excel  下面是本文的项目结构: 项目中所需要的jar文件: 所用的Excel数据(2003-2007,2010都是一

Java常用jar包用途

Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM字节码库 3 ASM asm-util-2.2.3.jar Java字节码操纵和分析框架 4 COMMONS commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期管理的常用方法. 5 COMMONS commons-beanuti

Java常见Jar包的用途

jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期管理的常用方法. jaxrpc.jar Axis运行所需要的组件包 saaj.jar 创建到端点的点到点连接的方法.创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法. wsdl4j-1.5.1.jar Axis运行所需要的组件包 activation.jar JAF框架的jar包 annotations-a