通过python的xlrd和xlwt对excle文件进行格式替换

在工作中碰到需要对已经导出的excle文件进行格式转换,总是手动替换觉得重复性太高,所以写了一点代码,现在还有序号那一列没有完成

ip格式转换:

原图:

 需要转成的格式:

import xlrd   #引入库
import xlwt

#读文件
#打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的
wb=xlrd.open_workbook(r"S:\测评部-第七组\003第七组\2022-05-25上海楷领科技有限公司-凌云集成电路设计赋能平台\05网络安全测试\change\Solved_123.60.55.30_rsas_host系统_漏洞情况汇总.xlsx")
sheet_num=wb.nsheets  #获取excel里面的sheet的数量
sheet_names=wb.sheet_names()   #获取到Excel里面所有的sheet的名称列表,即使没有sheet也能用。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
rows=sheet.nrows   #获取sheet页的行数,一共有几行
columns=sheet.ncols   #获取sheet页的列数,一共有几列

list = []  # 装读取结果的序列
for rownum in range(2, rows):  # 遍历每一行的内容
    row = sheet.row_values(rownum)  # 根据行号获取行
    if row:  # 如果行存在
        app = []  # 一行的内容
        for i in range(columns):  # 一列列地读取行的内容
            app.append(row[i])
        list.append(app)  # 装载数据
print(list)

#写入一个新的excle文件
# 1.创建 Workbook:wa
wa = xlwt.Workbook()
# # 2.创建 worksheet
ws = wa.add_sheet('漏洞清单')

#将list中的元素提取出来写入ws里
#一次写入一列,把list所有元素中的第2个元素写到ws的第3列(从第9行开始写入)
for j in range (len(list)):
    ws.write(j+8,3,list[j][1])
    ws.write(j+8,4,list[j][4])
    ws.write(j+8,5,list[j][3])
    ws.write(j+8,6,list[j][7])
#原文件的第4列需要提取IP后写入汇总后文件的第1列,提取端口号写入第2列,循环提取和写入
for k in range (len(list)):
    dizhi=list[k][5].split()#提取IP地址后形成一个列表
    print(dizhi)
    duankou=dizhi[2].split(":")#在dizhi列表的基础上提取端口
    # print(duankou)
    ws.write(k+8,1,dizhi[1])#将IP写入表ws
    ws.write(k+8,2,duankou[1])#将端口写入表ws

# 保存文件
wa.save(r'S:\测评部-第七组\003第七组\2022-05-25上海楷领科技有限公司-凌云集成电路设计赋能平台\08等级测评报告\myExcel.xls')

应用格式转换:

写文件还和上面一样,唯一不同的是应用原文件“漏洞地址”那一列直接写入新文件,不需要像主机原文件那样需要把ip和端口号提取出来

应用原文件:

 

import xlrd   #引入库
import xlwt

#读文件
#打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的
wb=xlrd.open_workbook(r"S:\测评部-第七组\003第七组\2022-05-25上海楷领科技有限公司-凌云集成电路设计赋能平台\05网络安全测试\change\Solved_https___support.kltlingyun.com___roleList_rsas_web系统_漏洞情况汇总.xlsx")
sheet_num=wb.nsheets  #获取excel里面的sheet的数量
sheet_names=wb.sheet_names()   #获取到Excel里面所有的sheet的名称列表,即使没有sheet也能用。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
rows=sheet.nrows   #获取sheet页的行数,一共有几行
columns=sheet.ncols   #获取sheet页的列数,一共有几列

list = []  # 装读取结果的序列
for rownum in range(2, rows):  # 遍历每一行的内容
    row = sheet.row_values(rownum)  # 根据行号获取行
    if row:  # 如果行存在
        app = []  # 一行的内容
        for i in range(columns):  # 一列列地读取行的内容
            app.append(row[i])
        list.append(app)  # 装载数据
print(list)

#写入一个新的excle文件
# 1.创建 Workbook:wa
wa = xlwt.Workbook()
# # 2.创建 worksheet
ws = wa.add_sheet('漏洞清单')

#将list中的元素提取出来写入ws里
#一次写入一列,把list所有元素中的第2个元素写到ws的第3列(从第9行开始写入)
for j in range (len(list)):
    ws.write(j+8,3,list[j][1])
    ws.write(j+8,4,list[j][4])
    ws.write(j+8,5,list[j][3])
    ws.write(j+8,6,list[j][7])
    ws.write(j+8,1,list[j][5])
    ws.write(j+8,2,"N/A")

# 保存文件
wa.save(r'S:\测评部-第七组\003第七组\2022-05-25上海楷领科技有限公司-凌云集成电路设计赋能平台\08等级测评报告\yy.xls')

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值