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*********************************** ...
随机推荐
- FileSaver.js 实现浏览器文件导出
FileSaver.js 实现浏览器文件导出 在浏览器中用 FileSaver.js 可以下载文件,不会造成文件直接打开等情况
- IntelliJ IDEA2018.3 最新破解方法 无需改host
文章转自 https://blog.csdn.net/SmileLvCha/article/details/78936659 刚把idea升级到最新版,发现要重新激活,网上查了有改host的方法可行, ...
- Scrapy对接Splash基础知识学习
一:什么是Splash Splash是一个 JavaScript渲染服务,是一个带有 HTTPAPI 的轻量级浏览器 1 功能介绍 利用 Splash,我们可以实现如下功能: 口异步方式处理多个网页渲 ...
- 如何在Qt Creator中添加库文件和头文件目录
在使用QtCreator开发图像处理程序的时候想加入Opencv库来处理图形,添加头文件,需要编辑工程文件夹下的.pro文件在文件中添加以下内容,即可包含头文件的文件夹: INCLUDEPATH += ...
- Vue2.x源码学习笔记-源码目录结构整理
先从github上下载或者clone一个vue分支项目 https://github.com/vuejs/vue 查看下目录结果 先列出一些目录 Vue |— build 打包相关的配置文件,其中最重 ...
- Sharding模式
将数据存储为一组水平的数据分区.这种模式可以在存储和访问大量的数据的时候提高可扩展性. 场景和问题 由单个服务器托管的数据存储可能受到下列限制: 存储空间限制.基于大规模云应用所使用的数据仓库,可能会 ...
- 01-时间复杂度、对数器(python)、冒泡、选择、递归实质、归并、小和问题、逆序对、mid
1.时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作. 时间复杂度为一个算法流程中,常数操作数量的指标.常用O(读作big O)来表示. 具体来说, ...
- 给echarts加个“全屏展示”
echarts的工具箱并没有提供放大/全屏的功能, 查找文档发现可自定义工具https://www.echartsjs.com/option.html#toolbox.feature show代码 t ...
- json模块 & pickle模块
之前学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所 ...
- centos6.5虚拟机安装后,没有iptables配置文件
openstack环境里安装centos6.5系统的虚拟机,安装好后,发现没有/etc/syscofig/iptables防火墙配置文件. 解决办法如下: [root@kvm-server005 ~] ...