package ShareClass;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.NoSuchFileException;
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.CellType;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;

/*
* 此类主要用于编写操作Excel的方法
*/
public class ExcelUtil {

private static Sheet excelSheet;
private static Workbook excelWorkBook;
private static Cell cell;
private static Row row;
private static FileInputStream excelFile;
private static String filePath;

public ExcelUtil(String filePath) throws NoSuchFileException {
filePath = this.filePath;
}

/**
* 判断是否存在“数据读取配置”
*
* @return
* @throws IOException
*/
public List<String[]> SetExcelReadConfig() throws IOException {
List<String[]> excelReadConfigList = new ArrayList<String[]>();
try {
// 实例化Excel文件的FileInputStream对象
excelFile = new FileInputStream(filePath);
// 实例化Excel文件的Workbook对象
String FileExtensionName = filePath.substring(filePath.indexOf("."));
// 判断文件类型如果是.xlsx,则使用XSSFWorkBook对象进行实例化
// 判断文件类型如果是.xls,则使用SSFWorkBook对象进行实力化
if (FileExtensionName.equals(".xlsx")) {
excelWorkBook = new XSSFWorkbook(excelFile);
} else if (FileExtensionName.equals(".xls")) {
excelWorkBook = new HSSFWorkbook(excelFile);
}
for (int i = 0; i < excelWorkBook.getNumberOfSheets(); i++) {
if (excelWorkBook.getSheetAt(i).equals("数据读取配置")) {
excelSheet = excelWorkBook.getSheet("数据读取配置");
int rowNum = excelSheet.getLastRowNum() - excelSheet.getFirstRowNum();
for (int j = 1; j < rowNum; j++) {
String[] configList = new String[6];
row = excelSheet.getRow(j);
for (int k = 0; k < 6; k++) {
if (row.getCell(k).equals(null)) {
row.getCell(k).setCellValue("0");
} else {
configList[k] = row.getCell(k).getStringCellValue();
}
}
excelReadConfigList.add(configList);
}
return excelReadConfigList;
} else {
continue;
}
}
return null;
} catch (NoSuchFileException e) {
// TODO: handle exception
throw (e);
}
}

/*
* 此方法主要用于读取Excel中的数据
*/
public static String[][] excelRead(String sheetName, int startRowNum, int endRowNum, int startCellNum,
int endCellNum) throws IOException {
// 实例化Excel文件的FileInputStream对象
excelFile = new FileInputStream(filePath);
// 实例化Excel文件的Workbook对象
String FileExtensionName = filePath.substring(filePath.indexOf("."));
// 判断文件类型如果是.xlsx,则使用XSSFWorkBook对象进行实例化
// 判断文件类型如果是.xls,则使用SSFWorkBook对象进行实力化
if (FileExtensionName.equals(".xlsx")) {
excelWorkBook = new XSSFWorkbook(excelFile);
} else if (FileExtensionName.equals(".xls")) {
excelWorkBook = new HSSFWorkbook(excelFile);
}
excelSheet = excelWorkBook.getSheet(sheetName);
// 获取Excel数据文件Sheet中的数据行号
// getLastRowNum方法获取数据的的最后行号
// getFirstRowNum方法获取数据的第一行行号
// 相减后算出数据的行号
// 注意:Excel文件的行号和列号都是从0开始的
int rowCount = endRowNum - startRowNum + 1;
// 获取Excel数据文件中的列号
int cellCount = endCellNum - startCellNum + 1;
// 定义各一个二维数组去接收这个数据
String[][] excelDate = new String[rowCount][cellCount];
// 循环遍历获取数据
for (int i = 0; i < rowCount; i++) {
row = excelSheet.getRow(startRowNum);
for (int j = 0; j < cellCount; j++) {
excelDate[i][j] = (String) (row.getCell(startCellNum).getCellTypeEnum() == CellType.STRING
? row.getCell(startCellNum).getStringCellValue()
: "" + row.getCell(startCellNum).getNumericCellValue());
}
startRowNum++;
}
return excelDate;
}

/*
* 此方法主要用于将测试结果写入到Excel中
*/
public static void excelWrite(int rowNum, int cellNum, String result) throws Exception {
try {
// 获取Excel文件中的行对象
int rowNumChange = rowNum + 2;
row = excelSheet.getRow(rowNumChange);
// 如果单元格为空
if (cell == null) {
// 单元格对象是Null的时候,创建单元格
// 如果单元格为空,无法直接调用单元格对象的setCellValue方法设定的单元格的值
cell.setCellValue(result);
} else {
// 单元格中有内容,则可以直接调用单元格对象的setCellValue方法设定单元格的值
cell.setCellValue(result);
}

// 实例化写入Excel文件的文件数出流对象
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
// 将内容写入Excel文件
excelWorkBook.write(fileOutputStream);
// 调用flush方法强制刷新写入文件
fileOutputStream.flush();
// 关闭文件输出流
fileOutputStream.close();
} catch (Exception e) {
// TODO: handle exception
throw (e);
}
}
}

Java的selenium代码随笔(1)的更多相关文章

  1. Java的selenium代码随笔(8)

    Selenium截图方法一: Selenium中截图类TakeScreenshout,这个类主要是获取浏览器窗体内的内容,不包括浏览器的菜单和桌面的任务栏区域,我们用百度首页来截图,看看截图效果. F ...

  2. Java的selenium代码随笔(5)

    //以下七种方法主要用于生成年.月.日.小时.分钟和秒的信息,用于生成保存截图的文件目录名和文件名/** 格式化输出日期* * @return 返回字符型日期*/public static Strin ...

  3. Java的selenium代码随笔(2)

    import java.awt.AWTException;import java.awt.Robot;import java.awt.Toolkit;import java.awt.datatrans ...

  4. Java的selenium代码随笔(7)

    //判断元素是否存在public boolean IsElementPresent (WebElement webElement, By by) { boolean status = false; t ...

  5. Java的selenium代码随笔(6)

    //获取元素列表public List<WebElement> ListElements(WebElement webElement, By parentBy, By childrenBy ...

  6. Java的selenium代码随笔(4)

    //高亮操作元素public void highlight(WebElement webElement) {JavascriptExecutor javascriptExecutor = (Javas ...

  7. Java的selenium代码随笔(3)

    /** 以下方法主要用于切换页面*/public void SetPageSwitch(String pageTitle) {Set<String> allWindowsHandles = ...

  8. Java使用Selenium几个例子

    零.姿势 Selenium分为两个版本:Selenium RC和Selenium Webdriver.现在用Selenium Webdriver比较多. Selenium是一套工具,而不仅仅是一个操纵 ...

  9. 正则表达式学习笔记(附:Java版示例代码)

    具体学习推荐:正则表达式30分钟入门教程 .         除换行符以外的任意字符\w      word,正常字符,可以当做变量名的,字母.数字.下划线.汉字\s        space,空白符 ...

随机推荐

  1. excel函数2

    1截取函数的应用 实例: 2.日期的年周月星期数据处理

  2. css隐藏滚动条

    xhtml中隐藏滚动条在用ie6浏览有框架的xhtml页面的时候,默认会水平和垂直滚动条会一起出现,这是ie6的一个bug,在firefox上是正常的,出现的原因是其对XHTML 1.0 transi ...

  3. 实现MongoDB读写分离的“读偏好”介绍

    在某些情况下,将读请求发送给副本集的备份节点是合理的,例如,单个服务器无法处理应用的读压力,就可以把查询请求路由到可复制集中的多台服务器上.现在绝大部分MongoDB驱动支持读偏好设置(read pr ...

  4. 从0开始的Python学习009参数

    默认参数 对于参数有时候我们希望他是可选的,前面介绍了函数柯里化,当然还有其他的解决方案.如果不想给某些参数提供值的话,就让这写参数使用默认值.在函数定义的时候给参数赋值使用(参数,参数=值..... ...

  5. for循环和foreach循环遍历集合的效率比较

    先上代码 package com.test; import java.util.ArrayList; import java.util.LinkedList; import java.util.Lis ...

  6. Javascript DOM(2)

    一.value属性操作 1.具有value属性的三个标签:input.select.textarea 2.value的获取:ele.value input=document.getElementByI ...

  7. Python爬虫【实战篇】百度翻译

    先看代码 import requests headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS ...

  8. kernel笔记——内核同步与锁

    内核同步 内核同步解决并发带来的问题,多个线程对同一数据进行修改,数据会出现不一致的情况,同步用于保护共享数据等资源. 有两种形式的并发: 同时进行式并发,在不同cpu上执行的进程同时访问共享数据 二 ...

  9. 为什么 npm 要为每个项目单独安装一遍 node_modules?

    nodejs中package.json中的依赖必须每个项目都有自己的node_modules文件夹,而无法在多个项目之间共用一套node_modules(像Java中的Maven那样). 依赖管理是每 ...

  10. final等关键字和代码块

    一.final关键字 其作用 1.final除构造方法外均可修饰 2.修饰类:被final修饰的类是无法被继承的. 3.修饰方法,可被继承,但是无法被重写 4.修饰变量使其为常量 5.修饰引用型变量, ...