import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.*; //XSSFWorkbook hook = "";
Workbook hook = "";
// try {
// book = new XSSFWorkbook(excelFile);
// } catch (Exception ex) {
// book = new HSSFWorkbook(new FileInputStream(excelFile));
// } try { InputStream inputStream = new FileInputStream(new File("/Users/iot/2.xlsx"));
hook = new XSSFWorkbook(inputStream);
print("========================"+hook);
inputStream.close(); } catch (Exception e) {
print("========================"+"Exception hook");
InputStream inputStream = new FileInputStream(new File("/Users/iot/2.xlsx"));
hook = new HSSFWorkbook(inputStream);
print("========================"+hook);
log.info("!!!!!!!!" + e.getMessage() + "!!!!!!!!!!!!!!!");
} if (!hook.equals("")) {
print("========================"+"create hook"); vars.putObject("hook", hook); } else {
print("========================"+"stop thread hook");
// hook=hook.createSheet("TestSuite");
// Row = hook.createRow(0);
// Row.createCell(0).setCellValue("DTC");
// vars.putObject("hook", hook); // SampleResult.setStopTestNow(true);
} int i = Integer.parseInt(vars.get("calc")); print("calc ========================"+i); XSSFRow row = vars.getObject("hook").getSheet("诗歌服务").getRow(i);
print("row ========================"+row);
vars.putObject("row", row); for (int j = 1; j <= vars.getObject("hook").getSheet("诗歌服务").getRow(0).getLastCellNum(); j++) { if (row.getCell(j) == null) {
row.createCell(j).setCellValue("");
}
} String caseNo = row.getCell(0).toString();
vars.put("caseNo",caseNo);
print(" caseNo---->>> "+"${caseNo}"); String input = row.getCell(1).toString();
vars.put("input",input);
print(" input---->>> "+"${input}"); String caseIntent = row.getCell(2).toString();
vars.put("caseIntent",caseIntent);
print(" caseIntent---->>> "+"${caseIntent}"); String caseDomain = row.getCell(3).toString();
vars.put("caseDomain",caseDomain);
print(" caseDomain---->>> "+"${caseDomain}"); String exp = row.getCell(4).toString();
vars.put("exp",exp);
print(" exp---->>> "+"${exp}");
 package excel;

 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.instrument.ClassFileTransformer;
import java.text.SimpleDateFormat;
import java.util.Date; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
import excel.CWResultFile.CWOutputFile;
import jxl.Cell;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException; public class CWResultFile { /** 导入jxl.jar;*后续扩充功能,sheet2增加测试报告展现;------待实现; */
public static class CWOutputFile {
public static void main(String[] args) throws RowsExceededException, WriteException, BiffException, IOException {
wOutputFile("/Users/iot/1.xls", "1", "“疑是地上霜”的下一句是什么", "GetNextPhrases", "诗歌服务", "举头望明月", "","", "{\"source\":\"third_chitchat\",\"asr\":{\"lang\":\"\",\"text\":\"\"},\"operation\":{},\"iscredible\":\"true\",\"confidence\":1,\"tts\":[{\"text\":\"举头望明月\\\"(唐代诗人李白《静夜思》)\",\"lang\":\"\",\"action\":{\"name\":\"\",\"param\":{\"duration\":0,\"url\":\"\",\"intent\":\"\",\"params\":null}}}],\"tags\":[\"\"],\"recomendation\":[],\"simqs\":null,\"gwdata\":{},\"tree\":{\"currentstate\":\"\",\"subtree\":null},\"expiration\":-79}", "", "", "");
}
/*
* wOutputFile方法写结果文件 wOutputFile(文件路径,案例编号,测试验证点,预期结果,实际结果,错误码,状态码,响应结果)
*/
public static void wOutputFile(String filepath, String caseNo, String testInput,String intent,String domain,String preResult,String fieldValue,String fresult,String rsp, String description,String tester,String sheetName)
throws IOException, RowsExceededException, WriteException, BiffException {
File output = new File(filepath);
if (!output.isFile()) {
output.createNewFile(); // 如果指定文件不存在,则新建该文件
WritableWorkbook writeBook = Workbook.createWorkbook(output);
WritableSheet Sheet = writeBook.createSheet(sheetName, 0); // createSheet(sheet名称,第几个sheet)
WritableFont headfont = new WritableFont(WritableFont.createFont("宋体"), 11, WritableFont.BOLD); // 字体样式
WritableCellFormat headwcf = new WritableCellFormat(headfont);
headwcf.setBackground(Colour.GRAY_25); // 灰色颜色
Sheet.setColumnView(0, 8); // 设置列宽度setColumnView(列号,宽度)
Sheet.setColumnView(1, 25);
Sheet.setColumnView(2, 10);
Sheet.setColumnView(3, 10);
Sheet.setColumnView(4, 10);
Sheet.setColumnView(5, 60);
Sheet.setColumnView(6, 10);
Sheet.setColumnView(7, 10);
headwcf.setAlignment(Alignment.CENTRE); // 设置文字居中对齐方式;
headwcf.setVerticalAlignment(VerticalAlignment.CENTRE); // 设置垂直居中;
//以下控制Label对应的位置
Label labe00 = new Label(0, 0, "No.", headwcf); // Label(列号,行号, 内容)//caseNo
Label labe10 = new Label(1, 0, "测试语句", headwcf);//testInput
Label labe20 = new Label(2, 0, "intent", headwcf); //intent
Label labe30 = new Label(3, 0, "domain", headwcf); //domain
Label labe40 = new Label(4, 0, "期望内容", headwcf); //preResult
Label labe60 = new Label(5, 0, "字段对应值", headwcf); //响应报文fieldValue
Label labe50 = new Label(6, 0, "测试结果", headwcf); //打印通过与否
Label labe70 = new Label(7, 0, "返回字符串", headwcf);//rsp
Label labe80 = new Label(8, 0, "说明", headwcf);
Label labe90 = new Label(9, 0, "测试人员", headwcf);
Sheet.addCell(labe00);
Sheet.addCell(labe10);
Sheet.addCell(labe20);
Sheet.addCell(labe30);
Sheet.addCell(labe40);
Sheet.addCell(labe50);
Sheet.addCell(labe60);
Sheet.addCell(labe70);
Sheet.addCell(labe80);
Sheet.addCell(labe90);
writeBook.write();
writeBook.close();
}
System.out.println(" %===================================================================================================% ");
String response=rsp;
JSONObject json = JSON.parseObject(response);
Object source = JSONPath.eval(json, "$.source");
Object text = JSONPath.eval(json, "$.tts[0].text");
Object intent_json = JSONPath.eval(json, "$['tts'][0]['action']['param']['intent']");
Object url = JSONPath.eval(json, "$['tts'][0]['action']['param']['url']"); String sou=JSONObject.toJSONString(source);
String tex=JSONObject.toJSONString(text);
String inte=JSONObject.toJSONString(intent_json);
String ur=JSONObject.toJSONString(url); String fieldReturnValue="source="+sou+";"+"text="+tex+";"+"intent="+inte+";"+"url="+ur;
System.out.println(" $$$$$$$$$$$$$$$$$$$$ "+fieldReturnValue);
fieldValue=fieldReturnValue;
String result = "";
InputStream instream = new FileInputStream(filepath);
Workbook readwb = Workbook.getWorkbook(instream);
WritableWorkbook wbook = Workbook.createWorkbook(output, readwb); // 根据文件创建一个操作对象
WritableSheet readsheet = wbook.getSheet(0);
// int rsColumns = readsheet.getColumns(); //获取Sheet表中所包含的总列数
int rsRows = readsheet.getRows(); // 获取Sheet表中所包含的总行数
/******************************** 字体样式设置 ****************************/
WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.NO_BOLD);// 字体样式
WritableCellFormat wcf = new WritableCellFormat(font);
/***********************************************************************/
Cell cell1 = readsheet.getCell(0, rsRows);
if (cell1.getContents().equals("")) {
Label labetest1 = new Label(0, rsRows, caseNo); // 第1列--案例编号;
Label labetest2 = new Label(1, rsRows, testInput); // 第2列--测试语句验证测试点;
Label labetest3 = new Label(2, rsRows, intent); //intent
Label labetest4 = new Label(3, rsRows, domain);//domain
Label labetest5 = new Label(4, rsRows, preResult); //预期结果;
Label labetest6 = new Label(5, rsRows, fieldValue); //fieldValue返回字段约束值
System.out.println("*********************************响应结果************************************** "+rsp);
System.out.println("*********************************预期结果************************************** "+preResult);
System.out.println("*********************************实际结果************************************** "+fresult);
if (rsp.contains(preResult)) {
// if (preResult == fresult) {
result = "通过";
System.out.println("*********************************通过************************************** ");
wcf.setBackground(Colour.BRIGHT_GREEN); // 通过案例标注绿色
} else {
result = "不通过";
wcf.setBackground(Colour.RED); // 不通过案例标注红色
}
Label labetest7 = new Label(6, rsRows, result, wcf); // 第7列--通过与否 执行结果;
Label labetest8 = new Label(7, rsRows, rsp); // 第8列--响应结果
Label labetest9 = new Label(8, rsRows, description); // 第9列--描述说明
Label labetest10 = new Label(9, rsRows, tester); // 第10列--测试人员 readsheet.addCell(labetest1);
readsheet.addCell(labetest2);
readsheet.addCell(labetest3);
readsheet.addCell(labetest4);
readsheet.addCell(labetest5);
readsheet.addCell(labetest6);
readsheet.addCell(labetest7);
readsheet.addCell(labetest8);
readsheet.addCell(labetest9);
readsheet.addCell(labetest10);
}
wbook.write();
wbook.close();
}
} }

jmeter XLSX 读取的更多相关文章

  1. jmeter参数化读取数据进行多次运行

    jmeter参数化数据,可以使用csv,还可以使用数据库的方式 1.使用csv读取数据 在线程组中,配置原件中,选择csv data set config 1.本地创建了16个数据,存为test.tx ...

  2. Python xlsx 读取

    代码示例 #!/usr/bin/env python import xlrd, sys, re, os workbook = xlrd.open_workbook( sys.argv[1] )for ...

  3. Jmeter做读取csv接口测试

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  4. xlsx 读取文件日期问题

    xlsx 的版本:0.13.5,可以取到日期 xlsx 的版本:0.14.3,取到的日期转为数字了,没有找到方法转为日期, 可以开启   cellDates: true,但是这个时区不对, dateN ...

  5. JMeter循环读取CSV文件实现接口批量测试

    首先要理解为什么要进行批量测试,当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多,而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等方式来测试接口是否能够正确返回所需的响 ...

  6. excel表格 xls、xlsx 读取

    public static void main(String[] args) throws Exception { // getdslContext(); String file = "F: ...

  7. sqlserver从xlsx读取数据

    exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Querie ...

  8. jmeter循环读取数据库中的数据

    1,添加一个jdbc请求 2,添加一个循环控制器,循环的次数为sql返回的记录数${var_#} 3,添加一个计数器(用来做变量拼接) 4,拼接变量,往目标接口发请求 最后脚本的构造如下:

  9. 解决:R读取含中文excel文件,read.xlsx乱码问题

    1.新建testexcel.xlsx文件 2.创建R文件:test.R # 定义文件变量 excel_path <- "chapter2/testexcel.xlsx" # ...

随机推荐

  1. qt5.10 for android 使用webview时qml 与html 中js的相互访问

    webview 本身没有qwebchannel 的接口,只能通过WebSocketServer 间接的访问. 参考 https://stackoverflow.com/questions/513131 ...

  2. visual studio code(vs code) 编译、运行、调试程序(调用g++)

    g++的安装过程忽略,记不清有没有"安装路径不能有空格"这种问题. 网上翻了几个博客,找到的配置文件在g++下都不能运行,遂折腾. 安装vscode与插件 插件为ms-vscode ...

  3. Java基础系列 - try...catch...finally

    package com.test6; import java.io.FileReader; import java.io.IOException; /** * try...catch...finall ...

  4. Python 学习随笔 - 2 - list 、tuple 、dict、set 特殊数据类型 及 实际应用

    1.list list是一种有序的集合,可以随时添加和删除其中的元素;  和C语言不同的地方是list里的元素甚至可以是不同类型的,甚至是另个list 例如:['A', 'B', 'C']   ['A ...

  5. 2019 SDN上级第五次作业

    1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 答:官方教程实现了一个将接收到的数据包发送到所有端口 ...

  6. Keil综合(03)_map文件全解析[转]

    推荐分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:ht ...

  7. SpringBoot持久层技术

    一.Springboot整合mybatis maven中添加对数据库与mybatis的依赖 <dependencies> <dependency> <groupId> ...

  8. 如何git revert merge commit?

    答: git revert -m <parent-number> <commit-id> (适用于merge操作的commit) 参考资料: https://blog.csdn ...

  9. nginx里面的location 规则匹配

    nginx location语法 ~ # 区分大小写的正则匹配 location ~ \.(gif|jpg|png|js|css)$ { #规则D } ~* # 不区分大小写的正则匹配(和~的功能相同 ...

  10. MySQL数据库备份之xtrabackup工具使用

    一.Xtrabackup备份介绍及原理 二.Xtrabackup的安装 1.在centos7上基于yum源安装percona-xtrabackup软件 [root@node7 ~]# yum -y i ...