思路:(可以不用key value来做,本次也没用到)

0)先创建new.xlsx 复制test.xlsx的所有内容,放到new.xlsx里 ,并 以key ,value的形式存base.xlsx数据( C列是key B列是value ) OK

1)在new.xlsx中:判断这个sheet页是否为空 不为空可,走2),为空跳过不走 (省略了,不会让它是空的!!!)

2)判断当前行是否为空 不为空可,走3),为空跳过不走

3) 判断当前行是否有 "GET/ 或者 "POST/ ,有 走4) 没有(不做处理)

4)定位是当前行: 提取 "GET/ 或者 "POST/ 后的字段,提取到空格之前 ,并输出到控制台上

5)定位是当前行:提取后与base.xlsx 内的C列进行比较(遍历)(以key ,value的形式存base.xlsx数据 ,和每一个key进行比较,相同则输出对应的value值)

相同:把取得的value 复制到new.xlsx 的当前行的A列

没有相同的:把当前行变成红色,并跳出本次循环 ,到第 2) 步

忽略以下三个提取后的字段:

logout

Switchnavi

Switchnavimain

&&list[index+1].lower() != 'logout'.lower() && list[index+1].lower() != 'Switchnavi'.lower() && list[index+1].lower() != 'Switchnavimain'.lower() 没写

三个表:

test.xlsx (数据源表)

base.xlsx (基础表)

new.xlsx (最终成果物表,python自己创建)

2.py文件 :

import openpyxl

import shelve

import re

#准备工作1:-------------------------------

filepath = 'new_excel1.xlsx'

wb = openpyxl.Workbook()

#默认表sheet1

ws1 = wb.active

#更改表名

ws1.title = '調査結果'

wb.save(filepath)

#ws1.cell(row=1,column=1,value='sheet1表1行1列的值').value

#复制test.xls的所有内容,放到new_excel1.xlsx里

from openpyxl import load_workbook

test_wb = load_workbook('test.xlsx')

new_excel1_wb = load_workbook('new_excel1.xlsx')

test_sheet =test_wb.get_sheet_by_name('調査結果')

new_excel1_sheet = new_excel1_wb.get_sheet_by_name('調査結果')

for i in range(1, test_sheet.max_row+1):

for j in range(1, test_sheet.max_column+1):

new_excel1_sheet.cell(row=i, column=j).value = test_sheet.cell(row=i, column=j).value

test_wb.save('test.xlsx')

new_excel1_wb.save('new_excel1.xlsx')

#并 以key ,value的形式存base.xls数据( C列是key B列是value )3.py 执行完后,发现多了test.db文件

#准备工作2:-------------------------------

db_test=shelve.open('test.db')

from openpyxl import load_workbook

base_wb = load_workbook('base.xlsx')

base_sheet =base_wb.get_sheet_by_name('123')

for i in range(2, base_sheet .max_row+1):

db_test[base_sheet.cell(row=i, column=3).value]=[base_sheet.cell(row=i, column=2).value]

print(base_sheet.cell(row=i, column=3).value,db_test[base_sheet.cell(row=i, column=3).value])

#1)在new.xlsx中:判断这个sheet页是否为空 不为空可,走2),为空跳过不走 (省略了,不会让它是空的!!!)

#2)判断当前行是否为空 不为空可,走3),为空跳过不走

def issheetEmpty() :

from openpyxl import load_workbook

new_excel1_wb = load_workbook('new_excel1.xlsx')

new_excel1_sheet = new_excel1_wb.get_sheet_by_name('調査結果')

for i in range(1, new_excel1_sheet.max_row+1):

#i=i.encode()

#if new_excel1_sheet.cell(row=i, column=2).value.strip() == "":

#pass

#for line, item in enumerate(new_excel1_sheet.readlines()):

#if line.strip() == "":

#pass

#else:

#3) 判断当前行是否有 "GET/ 或者 "POST/ ,有 走4) 没有(不做处理)

#根据空格分字段,判断当前行是否有 "GET/ 或者 "POST/

#list = new_excel1_sheet.cell(row=i, column=2).value.split()

from openpyxl import load_workbook

new_excel1_wb = load_workbook('new_excel1.xlsx')

new_excel1_sheet = new_excel1_wb.get_sheet_by_name('調査結果')

a=str(new_excel1_sheet.cell(row=i, column=2).value)

list = re.split(" ",a)

#list=list.encode()

#print(list)

#for i in list:

#if(i == '"GET/' or i == '"POST/') :

#print("yes is %s" %i)

#4)定位是当前行: 提取 "GET/ 或者 "POST/ 后的字段,提取到空格之前 ,并输出到控制台上

for index in range( len(list) ):

#index=index.encode()

if(list[index] == '"GET/' or list[index] == '"POST/') :

#print(list[index+1])

#5)定位是当前行:提取后与base.xls 内的C列进行比较(遍历)(以key ,value的形式存base.xls数据 ,和每一个key进行比较,相同则输出对应的value值)

from openpyxl import load_workbook

base_wb = load_workbook('base.xlsx')

base_sheet =base_wb.get_sheet_by_name('123')

for j in range(2, base_sheet.max_row+1):

#j=j.encode()

if(list[index+1].lower() == base_sheet.cell(row=j, column=3).value.lower()) :

new_excel1_sheet.cell(row=i, column=1).value=base_sheet.cell(row=j, column=2).value

new_excel1_wb.save('new_excel1.xlsx')

else:

continue

#else:

#new_excel1_sheet.cell(row=item).add_format({'bold': True, 'color': 'red'})

issheetEmpty()

print("end-------------------------------------------")

运行效果:

python有趣的工具_python好玩的小工具(正在create中)相关推荐

  1. python自动翻译小工具_Python实现翻译小工具

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面. 二.代码 git源码地址 Python实现翻 ...

  2. 使用python制作读取示波器波形的GUI小工具

    使用python制作读取示波器波形的GUI小工具 1.使用python创建GUI界面,该界面可以读取CSV数据格式的示波器波形并绘制在GUI界面上 2.可以zoom缩放操作 3.源码见链接 https ...

  3. 如何使用计算机闹铃,电脑闹钟小工具、电脑闹钟小工具怎么用

    原标题:电脑闹钟小工具.电脑闹钟小工具怎么用 手机上的闹钟是很多人日常生活中不可或缺的一个手机小工具,起床.上班等事情,很多人都会用手机设置闹钟提醒,到了指定的提醒时间闹钟就会发出铃声通知,提醒效果既 ...

  4. python小工具脚本_python实现倒计时小工具

    本文实例为大家分享了python实现倒计时小工具的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # coding=utf-8 import threading imp ...

  5. python入门学习小工具制作系列各种小工具整理

    一.制作基于windows系统批量重命名文件小工具 参考博客: 使用python做一个批量重命名文件的小工具_讷言丶的博客-CSDN博客 效果展示: 临时01 代码实现: import os from ...

  6. GitHub超3k星!从Python代码到APP只需要一个小工具~

    来源:机器之心 本文约2600字,建议阅读7分钟. 本文带你了解这款工具,在你写 Python 代码的时候,实时更新你的应用. 机器学习开发者想要打造一款 App 有多难?事实上,你只需要会 Pyth ...

  7. 【Python应用】自制截图取词小工具-- 解锁文字识别新姿势

    大家好 我是Yhen 很久不见呀 今天给大家分享一个自制的小工具-截图取词 及其制作过程 本工具是用Python写的 程序及代码的获取方式会在文末 文章目录 一.创作缘由 二.项目简介 三.思路分析 ...

  8. python温度转换_一步一步教会你,详解用Python实现一个简易的温度换算GUI小工具...

    今天,我们来使用Python完成一个小工具的制作.很简单,就是对于摄氏温度和华氏温度的相互换算.但是,我们的目的是复习一下之前学过的Python中tkinter的小内容. 复习下前面的知识 先来看下今 ...

  9. python autoit打开软件_Python+AutoIt实现界面工具开发

    前言 不同于Linux服务器上的命令行操作,在windows系统上用户的使用习惯还是倾向于使用有界面的工具.如果工具是命令行交互操作的方式,可能是有悖于在windows上使用的操作习惯,往往不容易推广 ...

最新文章

  1. 右键中添加“管理员取得所有权”
  2. Android清空Fragment缓存,清空Fragment来退栈中某个Fragment
  3. CoreText入门
  4. java hashmap 的api_JAVA基础--JAVA API集合框架(ArrayList、HashSet、HashMap使用)
  5. linux oracle11.2安装 ins-1010,ARCHLINUX下安装oracle11g
  6. C++对结构体按照某一项元素进行排序
  7. 数据库中间件01-认识mycat
  8. JMX实现远程服务器Tomcat系统监控之三
  9. SPC软件:全程监控食品质量
  10. 如何实现从外部APP直接跳转微信小程序的解决方案
  11. Java中线程同步锁和互斥锁有啥区别?看完你还是一脸懵逼?
  12. 网络直播电视之寻找直播地址(下)
  13. linux nodejs 采集器,前端工程师通过nodejs链接linux,并上传代码进行半自动化更新,省去ssh+ftp的链接工具-前端黑科技-SegmentFault思否...
  14. 计算机毕业设计JavaVue.js音乐播放器设计与实现(源码+系统+mysql数据库+lw文档)
  15. 戴尔新电脑笔记本桌面没有计算机,自主日常维修,更换戴尔灵越15屏幕过程记录...
  16. [bzoj4544]椭圆上的整点 解题报告
  17. 【Matlab学习手记】线搜索Goldstein准则
  18. 腾讯地图初始化以及解析和逆解析
  19. python设计一个动物类_【Python】每日一练:设计圆类计算周长和面积、设计动物类...
  20. 100个高频Spring面试题,助你一臂之力

热门文章

  1. HTML实现跳转到页面指定位置
  2. OER 7451 in Load Indicator : Error Code = OSD-0450
  3. 添加新闻在分层里的实现
  4. hdu 2047(递推)
  5. JSP简单练习-用Servlet获取表单数据
  6. hdu 1754 I Hate It(线段树之 单点更新+区间最值)
  7. 状态压缩dp入门 第一题 POJ 3254 Corn Fields
  8. 借助JVM生日的时机,说说关于JVM你所不知道的那些事
  9. omnigraffle 的一些总结
  10. php怎么返回json格式的数据