Jmeter读取Excel,BeanShell取样器调用rt.jar和jxl.jar | 您所在的位置:网站首页 › java读取excel中的图片 › Jmeter读取Excel,BeanShell取样器调用rt.jar和jxl.jar |
将rt.jar和jxl.jar,放在\apache-jmeter-5.0\lib\ext下面 import java.io.*;
import java.util.ArrayList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
String path = "C:/123.xls";
InputStream instream = new FileInputStream(path);
Workbook readwb = null;
Cell cell= null;
readwb = Workbook.getWorkbook(instream);
// 获取第一张Sheet表,Sheet的下标是从0开始
Sheet readsheet = readwb.getSheet(0);
// 获取Sheet表中所包含的总列数
int rsColumns = readsheet.getColumns();
// 获取Sheet表中所包含的总行数
int rsRows = readsheet.getRows();
// 获取指定单元格的对象引用
List list = new ArrayList();
//线程数(按线程数取行数)
rsRows = ${__threadNum};
print("线程数=========== :"+${__threadNum});
for (int i = 0; i < rsRows; i++) //行
{
for (int j = 0; j < rsColumns; j++) //列
{
cell = readsheet.getCell(j,i);
//list存第一行名字
if( i== 0){
list.add(cell.getContents());
continue;
}
//put变量存第二行以后的值(线程3以后会反复替换以前put的值)
vars.put(list.get(j),cell.getContents());
print(vars.get(list.get(j)));
}
} //log.info("isEnc:"+vars.get("name"));//调用jmeter内置log对象,日志会打印到jmeter.log中 //System.out.println(vars.get(list.get(j)));//打印 //print(vars.get(list.get(j)));//打印 //return vars.get(list.get(j));//返回 //print((vars.get("表头"))由于list无法传递,则每个线程都需要将第一行表头读取存在list里面; 但线程3以后,会反复读取Excel第二行(前面行)的数据,进行vars.put()替换值操作。 优化以上问题 import java.io.*; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; String path = "C:/123.xls"; InputStream instream = new FileInputStream(path); Workbook readwb = null; Cell cell= null; readwb = Workbook.getWorkbook(instream); // 获取第一张Sheet表,Sheet的下标是从0开始 Sheet readsheet = readwb.getSheet(0); // 获取Sheet表中所包含的总列数 int rsColumns = readsheet.getColumns(); // 获取Sheet表中所包含的总行数 int rsRows = readsheet.getRows(); // 获取指定单元格的对象引用 List list = new ArrayList(); //线程数(按线程数取行数) rsRows = ${__threadNum}; //该线程只读第一行和应该读的最后一行 int[] myRows = {0,rsRows-1}; print("线程数=========== :"+${__threadNum}); for (int i = 0; i < myRows.length; i++) //行 { for (int j = 0; j < rsColumns; j++) //列 { cell = readsheet.getCell(j, myRows[i]); //list存第一行名字 if(myRows[i] == 0){ list.add(cell.getContents()); continue; } //put变量只存最后一行的值 vars.put(list.get(j),cell.getContents()); print(vars.get(list.get(j))); } }其实以上两种都不影响最后需要的结果,只是影响效率 在接口调用时直接 ${"表头"} |
CopyRight 2018-2019 实验室设备网 版权所有 |