python好玩的小工具(正在create中)

思路:(可以不用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-------------------------------------------")              

运行效果:

posted @ 2020-11-15 14:01  吴哈尼冲冲冲  阅读(193)  评论(0)    收藏  举报