Java解析Excel
前两天总结了些关于Excel和CSV结合TestNG进行数据驱动测试的例子,对于Excel存放TestCase和关键字如何进行解析,也做了对应的总结,希望在学习的路上勇往直前,有不对的地方,希望大家指出,共同学习共同进步。
采用的是POI对Excel进行的解析,需要的Jar包文件:
poi-3.11-20141221.jar
poi-ooxml-3.11-20141221.jar
poi-ooxml-schemas-3.11-20141221.jar
xmlbeans-2.6.0.jar
代码如下:
package com.util.datadriver; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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; /**
* 通过POI对Excel中的数据进行基本的操作
*
* 需要导入额jar包: poi-3.11-20141221.jar、 poi-ooxml-3.11-20141221.jar、
* poi-ooxml-schemas-3.11-20141221.jar、 xmlbeans-2.6.0.jar
*
*/
public class ExcelController { Workbook workbook = null;
Sheet sheet = null; public void setExcelFile(String filePath, String fileName, String sheetName) { try { FileInputStream fis = new FileInputStream(new File(filePath));
String type = fileName.substring(fileName.indexOf("."));
if (type.equals(".xlsx")) { workbook = new XSSFWorkbook(fis); } else if (type.equals(".xls")) { workbook = new HSSFWorkbook(fis);
} sheet = workbook.getSheet(sheetName);
fis.close(); } catch (Exception e) {
e.printStackTrace();
} } //获取单元格的值
public String getCellData(int row, int column){ try { //获得Cell单元格对象
Cell cell = sheet.getRow(row).getCell(column);
//设置cell返回值的类型
cell.setCellType(Cell.CELL_TYPE_STRING);
//获取到cell单元格中的值
String cellData = cell.getStringCellValue();
return cellData; } catch (Exception e) { throw(e);
}
} //设置单元格的值
@SuppressWarnings("static-access")
public void setCellData(String value, int rowCount, int columnCount, String filePath){ try { Row row = sheet.getRow(rowCount);
Cell cell = row.getCell(columnCount,row.RETURN_BLANK_AS_NULL); if(cell == null){ row.createCell(columnCount).setCellValue(value); }else { cell.setCellValue(value);
} FileOutputStream fos = new FileOutputStream(new File(filePath));
workbook.write(fos);
fos.flush();
fos.close(); } catch (Exception e) { e.printStackTrace();
} } //获取Excel的行数
public int getColCount(Sheet sheet1){ int firstColCount = sheet1.getFirstRowNum();
int lastColCount = sheet1.getLastRowNum();
int sumColCount = lastColCount - firstColCount + 1;
return sumColCount; } //获取Excel中每行的数据,并用数组返回每行所有数据,方便与TestNG做数据驱动 public Object[][] getExcelData(String filePath, String fileName,
String sheetName) throws Exception { int sumRowCount = getColCount(sheet);; List<Object[]> list = new ArrayList<Object[]>(); // 获取每行的行对象,第一行为信息栏,不计入,所以从1开始
for (int i = 1; i < sumRowCount; i++) {
Row row = sheet.getRow(i);
// 获得一行中最后单元格的count
int lastCellCount = row.getLastCellNum(); // 定义一个数组来存放cell中值,根据cell的长度来定义数组的长度
String[] fileds = new String[lastCellCount]; for (int j = 0; j < lastCellCount; j++) {
String cellValue = row.getCell(j).getStringCellValue();
fileds[j] = cellValue;
}
list.add(fileds);
} // 定义一个object[][] 的二维数组,存放list中的值
Object[][] results = new Object[list.size()][];
// 设置二维数组每行的值,
for (int a = 0; a < list.size(); a++) { results[a] = list.get(a); } return results; } }
Java解析Excel的更多相关文章
- Java 解析Excel(xls、xlsx两种格式)
Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...
- java 解析excel工具类
java 解析excel工具类 CreateTime--2018年3月5日16:48:08 Author:Marydon ReadExcelUtils.java import java.io.Fi ...
- java 解析excel
2014年2月25日 14:24:48 解析excel方法 //首先是jar包下载,请自行百度 //代码 package cn.wuwenfu.excel; import java.io.File; ...
- Java解析Excel之应用Reflection等技术实现动态读取
目录树 背景 技术选型 问题分析 技术要点及难点分析 源码分析 测试用例 背景 Tip:因为产品提的需求我都开发完了,进行了项目提测:前天老大走过来说:你用spring-boot开发一个解析Excel ...
- 转:java 解析excel,带合并单元的excel
收集了一些对博主有帮助的博文,如下 >>>>>>>>>>>第一部分: 首先,mavn导入jar包 <!-- 解析excel需要导 ...
- 如何实现批量上传----------Java解析excel
一.引子 在web平台开发中仅经常会遇到一下需要批量的问题,通常得做法是使用excel上传,下面主要介绍一下在实际开发中到的实例. 二.准备工作 1.需要导入的jar包(主要用到poi包) (1)po ...
- java解析Excel日期格式转换问题
Excel上传导入,Excel里面单元格是日期的会解析出来数字,比如2020-07-11会解析为44023解决方法一: Excel单元格格式设置为文本格式.解决方法二: 使用代码处理,把解析出来的44 ...
- java解析Excel(xls、xlsx两种格式)
https://www.cnblogs.com/hhhshct/p/7255915.html ***************************************************** ...
- Java解析excel文档并以List<T>输出
/********************************************************工具类start*********************************** ...
随机推荐
- Js 不支持函数的重载
Js 不支持函数的重载,可以用相同的名字在同一作用区域,定义两个函数,而不会引起错误,但真正使用的是最后一个. Js 不会验证传递给函数的参数个数是否和函数定义的参数的个数相同,开发人员定义的函数都可 ...
- 表情存储异常--mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1)
文章参考 https://blog.csdn.net/junsure2012/article/details/42171035 https://www.cnblogs.com/WangYunShuai ...
- Java面试题复习之Java基础
1.面向对象的特征主要有哪些? 封装.继承.多态.抽象 2.final.finally.finalize的区别? final主要用于修饰类.方法.属性(变量)等. 通常被final修饰的类不能够被 ...
- ESP32 environment ubuntu
ubuntu官方用的是16.04版本的,阿里源下载地址:http://mirrors.aliyun.com/ubuntu-releases/16.04/ 用官方版本的好处就是省的搞一堆各种错误 ...
- omcat+java的web程序持续占cpu高问题调试【转】
1.top -c 2.查看具体线程 ps -m -p 30997 -o tid,%cpu,%mem > threads.log 3.printf %x 31865 其次将需要的线程ID转换为16 ...
- 04-MirrorGate安装脚本备注
1.run.sh #!/usr/bin/env bash set -e #当收到EXIT信号时执行这条命令,需要提前安装好docker-compose docker 并启动docker. trap ' ...
- 把DataTable转换为List<T>
前一篇有学习过<把List<T>转换为DataTable>http://www.cnblogs.com/insus/p/8043173.html 那此篇,将是学习反向,把Dat ...
- Redis命令总结 (转)
Redis命令总结 连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 持久化 save:将数据同步保存到磁盘 bgsave:将数据异步保存到磁盘 lastsa ...
- Ubuntu 打包后安装提示:子进程 已安装 pre-removal 脚本 返回了错误号 1
子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2 一.子进程 已安装 pre-removal ...
- HNOI2019 JOJO
HNOI2019 JOJO jojo这个坑填上了,然鹅还有序列这个题啊啊啊啊啊啊 膜 可持久化这个东西没有强制在线就是假的,直接建树dfs就行了 这题是kmp的加强版,每次会加一堆相同的数进来 先想一 ...