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 ...
随机推荐
- BurpSuite—-Target模块(目标模块)
Target功能 目标工具包含了SiteMap,用你的目标应用程序的详细信息.它可以让你定义哪些对象在范围上为你目前的工作,也可以让你手动测试漏洞的过程,Target分为site map和scope两 ...
- C语言简易三子棋
这是本人依据现学知识写的简易三子棋,也不是那么简洁明了,望大佬指点 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include&l ...
- 嵌入式Linux 网络编程
涉及到的数据结构: 下面首先介绍两个重要的数据类型:sockaddr和sockaddr_in,这两个结构类型都是用来保存socket地址信息的 定义如下所示: struct sockaddr { un ...
- Gulp的安装配置过程和一些小坑
谈谈gulp. 项目尾声,老师叫我去熟悉一下grunt前端自动化工具,第一次知道这种东西,我就查各种资料啊,发现grunt已经‘过时’了,大家都用gulp和webpack.我当然选择了配置最简单的gu ...
- 并查集(模板&典型例题整理)
参考:https://blog.csdn.net/oliver233/article/details/70162173 带路径压缩模板: #include<stdio.h> ]; int ...
- Tokio,Rust异步编程实践之路
缘起 在许多编程语言里,我们都非常乐于去研究在这个语言中所使用的异步网络编程的框架,比如说Python的 Gevent.asyncio,Nginx 和 OpenResty,Go 等,今年年初我开始接触 ...
- Oracle下如何设置 log_archive_dest
一:存在 DB_RECOVERY_FILE_DEST 时,如何设置 LOG_ARCHIVE_DEST: SQL> archive log listデータベース・ログ・モード アーカイブ・モード自 ...
- 【BZOJ3144】[HNOI2013]切糕
[BZOJ3144][HNOI2013]切糕 题面 题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑 ...
- 任务队列和异步接口的正确打开方式(.NET Core版本)
任务队列和异步接口的正确打开方式 什么是异步接口? Asynchronous Operations Certain types of operations might require processi ...
- angular promise $q 异步调用
Angular异步调用 Promise和$q的用法 背景 首先说明一下promise异步调用出现的背景: javascript语言是一种单线程模式,就是说一次只能够执行一个任务,如果有多个任务的话就必 ...