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. Oracle day01 select where关键字

    select关键字 作用:检索“列” 注意:1.select后面的列可以起别名(查询的显示结果) 1) 列名后面一个空格后添加别名(别名中不许有“空格”) 2) 列名后面一个空格后使用双引号添加别名 ...

  2. Android 修改包名,导致安装错误

    一.app运行安装时出错 [安装时出错]: [百度翻译] 安装失败的消息未能敲定会议:install_failed_invalid_apk:/数据/应用程序/ vmdl292154713.tmp/9_ ...

  3. URL中包含url参数,(文件路径作为参数)

    用encodeURIComponent方法,把路径放在里面,可以防止斜杠被取消. 以下attachfiles是我的一个文件的绝对路径. window.location.href="${pag ...

  4. 安卓开发:UI组件-图片控件ImageView(使用Glide)和ScrollView

    2.7ImageView 2.7.1插入本地图片 一个图片控件,可以用来显示本地和网络图片. 在首页添加按钮ImageView,指向新页面(步骤与前同,不再详写). activity_image_vi ...

  5. [aspnetcore.apidoc]一款很不错的api文档生成工具

    AspNetCore.ApiDoc 简单徐速一下为什么选用了aspnetcore.apidoc 而没有选用swagger 最初我们也有在试用swagger,但总是有些感觉,感觉有点不满意,就但从api ...

  6. ubuntu中使用机密数据Secrets

    目录 AptNetCore使用Secrets管理私密数据 前言 使用 设置UserSecretsId 设置机密 代码中访问机密 脚注 AptNetCore使用Secrets管理私密数据 前言 在项目中 ...

  7. spring学习总结——高级装配学习二(处理自动装配的歧义性)

    我们已经看到如何使用自动装配让Spring完全负责将bean引用注入到构造参数和属性中.自动装配能够提供很大的帮助.不过,spring容器中仅有一个bean匹配所需的结果时,自动装配才是有效的.如果不 ...

  8. AngularJS学习之旅—AngularJS 模型(四)

    1.AngularJS ng-model 指令 1.ng-model 指令用于绑定应用程序数据到 HTML 控制器(input, select, textarea)的值. 2.ng-model 指令可 ...

  9. laravel部署创建新项目 助记

    打开进入homestead虚拟机,并进入code文件夹 cd ~/homestead && vagrant up && vagrant ssh cd ~/Code 进行 ...

  10. php去掉字符串的最后一个字符

    php去掉字符串的最后一个字符 //例如 $str = "12,34,56,"; $newstr = substr($str,0,strlen($str)-1); //从第一位开始 ...