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. MySQL单行函数

    1.CONCAT(str1,str2,...) 返回来自于参数连结的字符串.如果任何参数是NULL,返回NULL.可以有超过2个的参数.一个数字参数被变换为等价的字符串形式.  select CONC ...

  2. <meta> 标签 和<title> 标签

    <meta> 标签 主流浏览器都支持 <meta> 标签. 标签定义及使用说明 元数据(Metadata)是数据的数据信息. <meta> 标签提供了 HTML 文 ...

  3. 6.JAVA-链表实例

    1.实现链表的步骤 1).实现Node节点类(用来保存链表中每个节点的数据,以及下一个节点成员) 2).实现LinkList链表类(用来封装Node节点类,和用户实现交互) 3).在LinkList类 ...

  4. Spring Boot admin 2.0 详解

    一.什么是Spring Boot Admin ? Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序. 应用程序作为Spring Boot Admin C ...

  5. linux命令df中df -h和df -i

    df 命令: linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [ ...

  6. iOS----------常见宏定义

    在我们日常的项目中,合理的使用宏定义,会大大减少我们的代码量,以及代码的可读性,为方便读者使用,总结如下: pragma mark - Application相关 ///=============== ...

  7. Flask框架搭建REST-API服务

    一.目的 为了能够将测试工具部署成RESTful-API服务,这样就能通过接口的方式提供统一测试工具服务,使用人员就不用构建application而产生的各种环境问题.使用问题. 适合人群:Pytho ...

  8. 算法: 整数中1出现的次数(从1到n整数中1出现的次数)

    问题: 整数中1出现的次数(从1到n整数中1出现的次数) 问题:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1.10.11 ...

  9. 导致spring事务配置不起作用的一种原因

    @Component public class AnalyticsApplication { @Autowired private InitializationActionService initia ...

  10. power-virus

    http://0cx.cc/category/yunwei/ 介绍安全姿势 https://www.freebuf.com/articles/system/193557.html