目前主要有两种常用的方式,jxl和POI。因为POI功能更加强大,面对大量数据时操作性能更加优于jxl,因此,在工作中一般使用POI来操作excel。
POI是Apache下的开放源码函数库,POI提供了一系列的api来供java程序员对Microsoft Office格式的文档提供读写功能。
本片中就用
POI模式进行举例:
首先工具类,读写Excel的类,Excelutil1
代码如下,代码基本上都是从网上抄写的,只是调试了一下,让他能使用:
package com.cailian.test.framework.utils; import java.io.FileInputStream;import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;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.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * * * @author * @version 2019年5月7日 */public class ExcelUtill1 { public static void setExcleFile(String filePath, int rowNumber,int colNumber,int result, String sheetName) throws Exception { FileInputStream ExcleFile; System.out.println(333); try { // 实例化Excle文件的FileInputStream 对象; ExcleFile = new FileInputStream(filePath); // 实例化Excle文件的XSSFWorkbook 对象; XSSFWorkbook ExcelWBook = new XSSFWorkbook(ExcleFile); /* * 实例化XSSFSheet 对象,指定ExcelFile中的sheet名称,用于后续对sheet中行和列的操作; * */ XSSFSheet ExcelWSheet = ExcelWBook.getSheet(sheetName); // 通过函数参数指定单元格的行号和列,获取指定单元格的对象; //Cell = ExcelWSheet.getRow(row).getCell(col); XSSFRow row = ExcelWSheet.getRow(rowNumber); XSSFCell col =row.getCell(colNumber); /* * 1.如果单元格的类型为字符串类型,使用getStringCellValue();来获取单元格的内容; * 2.如果单元格的类型为数字类型,使用getNumberricCellValue();来获取单元格的内容; * 注意:getNumberricCellValue();返回的值为double类型,转为为字符串类型,必须在 * getNumberricCellValue();前面加上(" ")双引号,用于强制转换为String类型,不加双引号 * 则会抛错;double类型无法转换为String类型的异常; * */ String CellData = col.getCellType() == XSSFCell.CELL_TYPE_STRING ? col.getStringCellValue() + "" : String.valueOf(Math.round(col.getNumericCellValue())); // 单元格中有内容,则可以直接调用seCellValue方法设定单元格的值 col.setCellValue(result); // 实例化写入Excel文件的文件输出流对象 FileOutputStream fileOut = new FileOutputStream(filePath); // 将内容写入Excel中 ExcelWBook.write(fileOut); fileOut.flush(); fileOut.close(); } catch (Exception e) { e.printStackTrace(); } } public static void setExcleFile1(String filePath, int rowNumber,int colNumber,String result, String sheetName) throws Exception { FileInputStream ExcleFile; System.out.println(333); try { // 实例化Excle文件的FileInputStream 对象; ExcleFile = new FileInputStream(filePath); // 实例化Excle文件的XSSFWorkbook 对象; HSSFWorkbook ExcelWBook = new HSSFWorkbook(ExcleFile); /* * 实例化XSSFSheet 对象,指定ExcelFile中的sheet名称,用于后续对sheet中行和列的操作; * */ HSSFSheet ExcelWSheet = ExcelWBook.getSheetAt(0); // 通过函数参数指定单元格的行号和列,获取指定单元格的对象; //Cell = ExcelWSheet.getRow(row).getCell(col); HSSFRow row = ExcelWSheet.getRow(rowNumber); HSSFCell col =row.getCell(colNumber); /* * 1.如果单元格的类型为字符串类型,使用getStringCellValue();来获取单元格的内容; * 2.如果单元格的类型为数字类型,使用getNumberricCellValue();来获取单元格的内容; * 注意:getNumberricCellValue();返回的值为double类型,转为为字符串类型,必须在 * getNumberricCellValue();前面加上(" ")双引号,用于强制转换为String类型,不加双引号 * 则会抛错;double类型无法转换为String类型的异常; * */ String CellData = col.getCellType() == XSSFCell.CELL_TYPE_STRING ? col.getStringCellValue() + "" : String.valueOf(Math.round(col.getNumericCellValue())); // 单元格中有内容,则可以直接调用seCellValue方法设定单元格的值 col.setCellValue(result); // 实例化写入Excel文件的文件输出流对象 FileOutputStream fileOut = new FileOutputStream(filePath); // 将内容写入Excel中 ExcelWBook.write(fileOut); fileOut.flush(); fileOut.close(); } catch (Exception e) { e.printStackTrace(); } } // 测试了可以使用,也可以自己用自己的文件去测试// public static void main(String[] args){// try {// setExcleFile1("D:/cailian_pg/测试脚本/功能测试/pg3.0/src/test/resources/data/ui/d1value/cityDataBeijing.xls",// 2,2,"3","Sheet");// } catch (Exception e) {// // TODO Auto-generated catch block// e.printStackTrace();// }// System.out.println(333);// } } 第二步使用工具类进行测试: UI自动化测试时,要把页面上获取的某个值写入Excel中,需要获取这个值后,然后调用写入Excel的方法setExcleFile1就可以了。调用方法时参数依次是:文件名,行数,列数,写入的值,sheet单的名字。
需求是:Excel的每条用例执行后,需要把一个值写入到每一行的固定的列中。比如说是每一行的30列中。
可以方法的行用caseID,列是固定的,文件名是写死的。
如果文件名也要求是变化的,可以用配置文件。下期介绍。。。。。
第三步:运行完成时,发现那个值已经写入文件中了,
原文地址:https://www.cnblogs.com/yqcf/p/11615880.html
时间: 2024-11-08 10:09:05