使用POI读取和写出EXCEL文件(写出部分待完善)

Excel文件在工作中运行非常多,有时候需要我们结合数据读取和写出相应的数据,在这里写一个简单的demo方便以后的调用和学习:


读取文件部分:


首先,导入相应的JAR包

1、dom4j-1.6.1.jar  (一定要导入该包,不然POI解析的时候会报错) 

2、poi-3.8-20120326.jar

3、poi-ooxml-3.8-20120326.jar

4、poi-ooxml-schemas-3.8-20120326.jar

5、xmlbeans-2.3.0.jar


其次,代码部分

1、功能代码

public class ImportExcel {

	/**
	 * 根据文件路径获取Excel中的数据
	 * 
	 * @param FilePath	文件路径
	 * @param num	表头的数量(也就是多少列)           
	 * 
	 */
	public static void getDataFromExcel(String FilePath , int num) {

		// 判断是否是excel文件
		if (!FilePath.endsWith(".xls") && !FilePath.endsWith(".xlsx")) {
			System.out.println("导入的文件不是Excel文件类型!");
		}

		FileInputStream fis = null;
		Workbook workbook = null;
		// 构建一个输入流
		try {
			fis = new FileInputStream(FilePath);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		try {
			if (FilePath.endsWith(".xls")) {
				// 获取2003版的EXCEL文件
				workbook = new HSSFWorkbook(fis);
			} else {
				// 获取2007版的EXCEL文件
				workbook = new XSSFWorkbook(fis);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 获取一个EXCEL工作表
		Sheet sheet = workbook.getSheetAt(0);
		// 获取工作表表头
		Row rowHead = sheet.getRow(0);
		// 判断表头是否正确
		if (rowHead.getPhysicalNumberOfCells() != num) {
			System.out.println("表头数据不正确");
		} else {
			// 获取数据的总行数
			int rowNum = sheet.getLastRowNum();
			// 获取到的属性
			String name = null;
			int age = 0;
			// 获取EXCEL表中的所有数据
			for (int i = 1; i <= rowNum; i++) {
				// 获取第i行的数据
				Row row = sheet.getRow(i);
				// 获取第i行的第0列的数据
				Cell cell = row.getCell((short) 0);
				name = cell.getStringCellValue().toString();
				// 获取第i行的第1列的数据
				cell = row.getCell((short) 1);
				age = (int) cell.getNumericCellValue();
				System.out.println("name:" + name + "age:" + age);
			}
		}
	}
}
2、测试代码

public class Test {
	
	public static void main(String[] args) {
		String FilePath = "D:/studentInfo.xlsx";

		 ImportExcel.getDataFromExcel(FilePath,2);
	
	}
}

3、Excel中的数据

nameage
张三21
李四22
王五23
赵六21

4、输出情况

name:张三   age:21
name:李四   age:22
name:王五   age:23
name:赵六   age:21

最后,读取部分总结:

1、由于excel版本的不同,主要是2003和2007后缀的问题,解析的类也不一样,

xls 版本解析类:workbook = new HSSFWorkbook(fis);

xlsx 版本解析类:workbook = new XSSFWorkbook(fis);

所以一定要判断是哪种后缀,不然会报错

2、在读取数据的循环当中,注意数据类型,比如有列名,从第一行开始循环的话,因为有age不能转换成int类型,所以会报错。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值