将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)));
} }

其实以上两种都不影响最后需要的结果,只是影响效率

在接口调用时直接 ${"表头"}

最新文章

  1. 初谈SQL Server逻辑读、物理读、预读
  2. Java中货币格式化
  3. Opera浏览器导出收藏到Chrome,和几个Chrome的一些小技巧
  4. STM8 EEPROM:
  5. 根据网址把图片下载到服务器C#代码
  6. 移除首页-&gt;重回首页
  7. 【洛谷 p3382】模板-三分法(算法效率)
  8. 面试题_103_to_124_关于 OOP 和设计模式的面试题
  9. iOS开发之git学习
  10. 基于visual Studio2013解决C语言竞赛题之1045打印成绩
  11. CentOS 7 时区设置
  12. Android4.4KitKat支持u盘功能
  13. 常见浏览器的宽高代码写法!有原生JavaScript和jquery两种写法-------------------------------以及我的个人网站
  14. 用 Docker Machine 创建 Azure 虚拟主机
  15. [js高手之路]原型对象(prototype)与原型链相关属性与方法详解
  16. OpenStack Ocata 超详细搭建文档
  17. Spring框架(二)
  18. Sorting Slides(二分图匹配——确定唯一匹配边)
  19. SSDT Hook实现内核级的进程保护
  20. 深度学习-Windows平台下的Caffe编译教程

热门文章

  1. Last Day in Autodesk
  2. 解决VS2015单元测试“未能设置用于运行测试的执行上下文”问题
  3. 淘宝开放平台使用WebClient,WebRequest访问时的错误提示导致麻烦
  4. django CharField按整形排序
  5. scrapy入门:安装scrapy
  6. spyder 快捷键
  7. .net的mvc的fw版本为4.5发布到阿里云【云虚拟主机】上.
  8. Javascript_06_表单验证(离开单项,输入框后提示信息)
  9. 【PAT】 B1006 换个格式输出整数
  10. Teradata 终止回滚方法(rcvmanager工具)