小工具二:报文比对工具
今天突然就想着把之前的写的小工具全部都发出来…
是因为原本计划着写整个接口自动化的思路相关的文章,但是写到一半发现自己能力不够了-。 -
嗯有很多细节点我还需要再去查询和梳理。
所以就先发这个了了了了了…
背景:当时候由于项目需要,我们要统计接口文档上标明的字段 占 接口返回的响应报文中含有的字段的百分之多少…说实话,我也不清楚这波操作的意义何在?(还好领导应该不会看csdn)
领导说啥就做啥呗。量少的时候还能手工做,量大就不行了。所以才有动力去写这个脚本。
比对原则:B列中每行的值都会和A列中所有的值进行对比,然后在C列生成记录。最后在D列生成本次执行结果的信息。
话不多说
package BaoWen_BiDui;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/** CS_test* 对比报文专用* */
public class compare_xml {static File src = null;static FileInputStream fis=null;static XSSFWorkbook wb=null;static StringBuffer sb = new StringBuffer();private static int j; public static void Qu_Zhi(int z){try{ //加载sheet,这里我们只有一个sheet,默认是sheet1 XSSFSheet sh1= wb.getSheetAt(z);int count=0;List<Integer> list = new ArrayList<Integer>();//取得单元格内字段,判断从第一个‘<’后一个位置开始拿值,一直拿到第一个‘>’的前一个位置for(int i=0;i<sh1.getPhysicalNumberOfRows();i++){String val = sh1.getRow(i).getCell(1,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();if(val.indexOf("<")==-1){continue;}//判断:如果只存在单个<>,则不会进行对比if(val.indexOf("<")!=(val.lastIndexOf("<"))){String val_2 = val.substring(val.indexOf("<")+1, val.indexOf(">"));for(int k=0;k<sh1.getPhysicalNumberOfRows();k++){if(val_2.equals(sh1.getRow(k).getCell(0,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue())){sh1.getRow(i).getCell(2,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("已含有");list.add(k);count++;break;}else{sh1.getRow(i).getCell(2,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("未含有"); }}}else{sh1.getRow(i).getCell(2,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("该字段不会进行对比");}}//拿到出现已含有时候对应的A列的行数,并保存到数组里面 Collections.sort(list);j = 0;for(int inx=0;inx<sh1.getPhysicalNumberOfRows();inx++){if(j>=list.size()){//System.out.println("未包含"+inx);sh1.getRow(inx).getCell(3,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(sh1.getRow(inx).getCell(0,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue());continue;}if(list.get(j)==inx){j++; }else {//System.out.println("未包含"+inx);sh1.getRow(inx).getCell(3,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(sh1.getRow(inx).getCell(0,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue());}}// for(int f=0;f<mx.length()-1;f++){
// for(int g=0;g<sh1.getPhysicalNumberOfRows();g++){
// System.out.println(mx.charAt(f));
// if(!String(mx.charAt(f)).equals(g)){
// sh1.getRow(g).getCell(3,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(
// sh1.getRow(g).getCell(0,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue());
// }
// }
// }
// System.out.println(list);System.out.println(" ┌'已含有'字段出现次数:"+count+"┐");System.out.println("这是第"+(z+1)+"张Sheet页-------│接口总字段:----------"+sh1.getPhysicalNumberOfRows()+"│");double d =Math.round(count*1.0/sh1.getPhysicalNumberOfRows()*10000)/100.0;System.out.println(" └字段覆盖率:-----"+d+"%┘");sh1.getRow(0).getCell(4,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("已含有字段出现次数:"+count);sh1.getRow(1).getCell(4,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("接口总字段:"+sh1.getPhysicalNumberOfRows());sh1.getRow(2).getCell(4,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("字段覆盖率:"+d+"%");// 保存文件 FileOutputStream fout=new FileOutputStream(new File(".\\Files_BiDui\\BiDui.xlsx")); //覆盖写入内容 wb.write(fout); // 关闭文件 fout.close(); } catch (Exception e){ e.printStackTrace();}}public static void main(String[] args) {// TODO Auto-generated method stubsrc = new File("./Files_BiDui/BiDui.xlsx"); // 加载文件 try {fis = new FileInputStream(src);wb =new XSSFWorkbook(fis);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} long t1 = System.currentTimeMillis();//几张sheet页,z就是小于几
// PropertyConfigurator.configure("config/log4j.properties");for(int z=0;z<2;z++){Qu_Zhi(z);}long t2 = System.currentTimeMillis();System.out.println("大吉大利,已完成当前比对!"+"用时 " + (t2 - t1) + " 毫秒"); } }
还是那句话,可能这个工具适用性不强。
但是综合上一篇案例生成的小工具,我想给大家带来的一个习惯就是:
如果我们需要在excel上进行一些大批量的读写操作,且其中有一定的规律,我们可以考虑自己写一些小工具。
小工具二:报文比对工具相关推荐
- Vector CAN Log报文收发分析工具VN1640/VN1630替代款工具--CANBOX
博主联系方式:QQ:1256153255 ,邮箱:1256153255@qq.com 作为车载行业的童鞋们,绝大多数人应该都知道或用过Vector的CAN Log报文收发分析工具VN1630(A)和V ...
- ES报文辅助生成工具-JavaFX
此程序为基于 Java8 开发的 JavaFX Maven 工程,是 Java 组装ElasticSearch请求报文工具的辅助 Java 代码生成工具,方便开发者快速编写代码.现学现用,写得不好. ...
- ISO8583报文组装解析工具和定义器示例
8583报文组装和解析工具类(Send8583Util),代码如下: import com.alibaba.fastjson.JSONObject; import org.apache.commons ...
- md5sum算法 —— linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序
md5sum帮助命令: [root@jie openssl]# md5sum --help Usage: md5sum [OPTION]... [FILE]... Print or check MD5 ...
- PCL小工具二:使用kitti的GT(ground truth)建立激光点云地图
此代码合并了每一帧的激光点云数据,构成了激光点云地图. ground truth,即真值,在本文简写成GT. 在kitti数据集中,GT代表了世界坐标系下相机的位姿真值,也就是Tcam2world 经 ...
- 班级小工具二【随机抽取同学】
这里还是和之前的一样,先在src文件夹下创建ANSI格式的.txt文件用于存储名单,我这里用到了接龙检测中用到过的班级名单,还有将男生和女生分别列了出来 class Random_People { # ...
- 发票管理小工具二:获取发票内容
开发环境: PyCharm 2019.3.5 (Community Edition) Python3.7 pdfminer3k 1.3.4 发票是pdf格式,使用pdfminer3k来获取,相应代码: ...
- 周末学习总结(LIO标定+kitti数据集的使用+evo工具的使用+开源数据集+ssh的使用)
周末学习总结 LIO标定 lidar_IMU_calib lidar_align kitti数据集的使用 开源数据集 evo工具的使用 ssh 的使用 LIO标定 网上开源的标定包,用的比较多的是浙江 ...
- Android开发实用小工具三——面积转换工具
文章目录 前言 一.效果展示 二.代码 主代码 总结 前言 面积转换工具的开发与实现. 一.效果展示 二.代码 准备工作和样式布局与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一篇文章. ...
最新文章
- 解决存储过程中数据安全问题的四种方式
- Keras Theano 输出中间层结果
- MongoDB的可视化工具
- boost::mp11::mp_fold_q相关用法的测试程序
- 【ThinkingInC++】61、非成员运算符
- typescript 接口 java_Typescript基础(4)——接口
- python南开大学王凯_王凯:长大后我也成了你
- python环境准备_一键实现Python环境准备
- 计算机网络与应用第三次笔记
- 深度探索C++对象模型读书笔记(1)
- unity串口 连接多个串口崩溃_必学DB9串口+3种连接方式
- c语言数据结构课程设计算术表达式求值,《数据结构 课程设计》表达式求值 实验报告...
- web前端之HTML5 入门(9):脚本、速查列表、URL、字符实体
- C++ rb_tree红黑树
- 易能变频器说明书故障代码_易能变频器故障判断与处理
- Fedora17下的hadoop-1.0.4系统配置
- Unresolved reference(未解析的引用)——解决Pycharm无法导入包问题
- orangepi——i2c协议,0led显示
- 扇形展开的悬浮菜单按钮CircularFloatingActionMenu
- bandzip与WinRAR
热门文章
- 华为rh2288v2服务器系统,扩展能力强 华为RH2288H V2服务器解析
- TiDB监控pd面板显示:Region Health: empty-regin-count很多,怎么回收empty-regin?
- 最简单的计算机原理,【图片】【技术帖】从原子到计算机(计算机原理纯正技术帖,简单且通俗)_计算机吧_百度贴吧...
- Ip2region 离线IP地址定位库
- 黑马程序员——结缘黑马
- 操作系统复习题最全(复习看它就够了!!!!!
- vba 输出文本 m Linux,利用VBA实现EXCEL数据输出TXT等文本文件
- 夺宝答题王小程序完整源码(含前端/后端以及数据库脚本)
- 【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)
- 参观营收上亿的私域流量企业