java读取xls和xlsx数据作为数据驱动来用
java读取Excle代码 拿来可以直接使用 :针对xls 和 xlsx
package dataProvider;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class DP_Demo { public static Object[][] getTestData(String filePath) throws FileNotFoundException, IOException {
File excelFile = new File(filePath);
/*
* 判断给定文件的类型; 1.如果是xls的问价那类型就创建XSSFWorkBook ;
* 2.如果是xlsx的文件类型就创建HSSFWorkBook ;
*/ String xls = filePath.substring(filePath.indexOf('.'));
System.out.println("传入文件的后缀是:" + xls + " ;");
if (xls.equals(".xls")) {
HSSFWorkbook xlswb = new HSSFWorkbook(new FileInputStream(excelFile));
HSSFSheet sheet = xlswb.getSheetAt(0);
int rowcount = sheet.getLastRowNum() - sheet.getFirstRowNum();
List<Object[]> list = new ArrayList<Object[]>();
// System.out.println("---------该sheet总共有 :" + rowcount + " ;");
Row row;
Cell cell;
for (int i = 0; i < rowcount + 1; i++) {
row = sheet.getRow(i);
if(row.getCell(i)==null){
continue ;
}else{ }
Object[] obj = new Object[row.getLastCellNum()]; /*
* System.out.println("当前行是:" + (row.getRowNum() + 1) +
* " ;当前行的第一个单元格是:" + row.getFirstCellNum() + " ; 当前前的最后一个单元格是:"
* + row.getLastCellNum() + "; ");
*/
// System.out.println("obj 数组的长度是 :" + obj.length + " ;");
for (int j = 0; j < row.getLastCellNum(); j++) {
cell = row.getCell(j);
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
obj[j] = cell.getRichStringCellValue().getString();
/*
* System.out.print(cell.getRichStringCellValue().
* getString()); System.out.print("|");
*/ break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
obj[j] = cell.getDateCellValue();
// System.out.print(String.valueOf(cell.getDateCellValue()));
} else {
obj[j] = cell.getNumericCellValue();
// System.out.print(cell.getNumericCellValue());
}
// System.out.print("|");
break;
case Cell.CELL_TYPE_BOOLEAN:
obj[j] = cell.getBooleanCellValue();
/*
* System.out.print(cell.getBooleanCellValue());
* System.out.print("|");
*/ break;
default:
} }
list.add(obj);
// System.out.println();
}
// System.out.println("list.size()===" + list.size());
Object[][] object = new Object[list.size()][];
for (int i = 0; i < object.length; i++) {
object[i] = list.get(i);
}
return object; } else if (xls.equals(".xlsx")) {
XSSFWorkbook wbxlsx = new XSSFWorkbook(new FileInputStream(excelFile));
XSSFSheet sheet = wbxlsx.getSheetAt(0); int rowcount = sheet.getLastRowNum() - sheet.getFirstRowNum();
List<Object[]> list = new ArrayList<Object[]>();
// System.out.println("---------该sheet总共有 :" + rowcount + " ;");
Row row;
Cell cell;
for (int i = 0; i < rowcount + 1; i++) {
row = sheet.getRow(i);
/*
* System.out.println("当前行是:" + (row.getRowNum() + 1) +
* " ;当前行的第一个单元格是:" + row.getFirstCellNum() + " ; 当前前的最后一个单元格是:"
* + row.getLastCellNum() + "; ");
*/
Object[] obj = new Object[row.getLastCellNum()];
// System.out.println("obj 数组的长度是 :" + obj.length + " ;");
for (int j = 0; j < row.getLastCellNum(); j++) {
cell = row.getCell(j);
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
obj[j] = cell.getRichStringCellValue().getString();
/*
* System.out.print(cell.getRichStringCellValue().
* getString()); System.out.print("|");
*/
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
obj[j] = cell.getDateCellValue();
// System.out.print(String.valueOf(cell.getDateCellValue()));
} else {
obj[j] = cell.getNumericCellValue();
// System.out.print(cell.getNumericCellValue());
}
// System.out.print("|");
break;
case Cell.CELL_TYPE_BOOLEAN:
obj[j] = cell.getBooleanCellValue();
/*
* System.out.print(cell.getBooleanCellValue());
* System.out.print("|");
*/
break;
default:
} }
list.add(obj);
System.out.println();
}
// System.out.println("list.size()===" + list.size());
Object[][] object = new Object[list.size()][];
for (int i = 0; i < object.length; i++) {
object[i] = list.get(i);
}
return object;
} else {
System.out.println("指定的文件不是excle文件!");
}
return null;
} public static void main(String[] args) throws FileNotFoundException, IOException {
// String filePathxls = "D:\\2003table15.xls";
String filePathxlsx = "D:\\2007Text.xlsx";
// Object [][] objxls =DP_Demo.getTestData(filePathxls);
Object[][] objxlsx = DP_Demo.getTestData(filePathxlsx);
/*
* for (int i = 0; i < objxlsx.length; i++) {
* System.out.println(objxlsx[i]); }
*/ Object[] obj1 = objxlsx[0];
for (int i = 0; i < obj1.length; i++) {
System.out.print("[" + obj1[i] + "] ");
} } }
java读取xls和xlsx数据作为数据驱动来用的更多相关文章
- 用NPOI实现导入导出csv、xls、xlsx数据功能
用NPOI实现导入导出csv.xls.xlsx数据功能 直接上代码 首先定义一个接口 如果需要直接操作文件的话,就自己在封装一次 然后定义csv类的具体实现 这个需要引入命名空间LumenWo ...
- java读取请求中body数据
java读取请求中body数据 /** * 获取request中body数据 * * @author lifq * * 2017年2月24日 下午2:29:06 * @throws IOExcepti ...
- POI操作Excel详解,读取xls和xlsx格式的文件
package org.ian.webutil; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...
- 使用poi或jxl,通过java读写xls、xlsx文档
package nicetime.com.baseutil; import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffExcepti ...
- Python中如何读取xls中的数据
要想读取EXCEL中的数据,首先得下载xlrd包,地址:https://pypi.python.org/pypi/xlrd 安装方法:下载解压后,利用windows dos命令进入解压目录eg,c ...
- JAVA 读取xml格式的数据
<?xml version="1.0" encoding="UTF-8"?> <column-enums> <type name= ...
- 【转】Java读取matlab的.mat数据文件
参考:Java读取mat文件 下载链接:ujmp jmatio 下载完两个.jar文件之后,如何引用到java项目当中?项目名称->右键->Property->Java Build ...
- java 读取Excel文件并数据持久化方法Demo
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...
- POI读取xls和xlsx
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...
随机推荐
- golang基础--strcut结构体
结构体struct类似python语言中的类class,结构体类的元素可以是一个变量,或者函数或者其它的类型,好比python的属性和方法. // struct结构体,类似python语言中的clas ...
- 20155323刘威良第二次实验 Java面向对象程序设计
20155323刘威良第二次实验 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 ...
- 系统分析与设计——WordCount
成果: https://gitee.com/ZMLJZ/codes/0k19q4upgmrfde265l7vx36 作业要求: 根据WordCount的需求描述,先编程实现,再编写单元测试,最后撰写博 ...
- RHCSA-考前准备
1.考前准备 RHCSA classroom虚拟机和server虚拟机 将两台虚拟机切换到初始化快照 打开虚拟机电源,当出现提示时选择我已移动该虚拟机 系统密码: classroom: root As ...
- 1、maven打包 install package deploy区别
maven package:打包到本项目,一般是在项目target目录下.如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错. maven install:打 ...
- python基础——字符串
Python的核心数据类型--字符串 常见字符串常量和表达式 操作 解释 s = '' 空字符串 s = "dodo's" 双引号和单引号 s = 'd\no\p\td\x00o' ...
- 【JUC源码解析】Semaphore
简介 Semaphore(信号量),概念上讲,一个信号量持有一组许可(permits). 概述 线程可调用它的acquire()方法获取一个许可,不成功则阻塞:调用release()方法来归还一个许可 ...
- Google TensorFlow for GPU安装、配置大坑
Google TensorFlow for GPU安装.配置大坑 从本周一开始(12.05),共4天半的时间,终于折腾好Google TensorFlow for GPU版本,其间跳坑无数,摔得遍体鳞 ...
- 《物质世界 (Outward)》证明不必压缩制作大型角色扮演游戏的时间
<物质世界>是一款雄心勃勃的开放世界角色扮演游戏 (RPG),设计这款游戏的公司规模只有您预期的三分之一.游戏中的一切都是动态的,拥有许多炫酷的系统设计,大家可以分屏合作掌控整个场景.参与 ...
- 换Mac了,迈入了终端的大门
多终端其实本质和多线程一样,所有终端其实都共享着同一个内存只不过不同终端对共享内存不同部分的权限不同罢了所以对终端的数量必须要有限制 我这里开启了四个线程,很明显四个线程都在跑同一个内存而且四个线程都 ...