通过python的xlrd和xlwt对excle文件进行格式替换
时间:2023-07-28 10:37:00
在工作中遇到需要导出的需要。excle文件的格式转换,总是手动替换,感觉重复性太高,所以写了一点代码,现在还有序列没有完成
ip格式转换:
原图:
需要转成的格式:
import xlrd #引入库 import xlwt #读文件 #打开文件,返回工作蒲对象。open_workbook点击查看函数中参数的含义等 wb=xlrd.open_workbook(r"S:\评价部-第七组\003第七组\上海楷领科技有限公司-凌云集成电路设计赋能平台\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写下所有元素中的第二个元素ws第三列(从第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]) #需要提取原文件第四列IP汇总后写入文件第一列,提取口号写入第二列,循环提取和写入 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第七组\上海楷领科技有限公司-凌云集成电路设计赋能平台\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写下所有元素中的第二个元素ws第三列(从第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第七组\上海楷领科技有限公司-凌云集成电路设计赋能平台\08等级评估报告\yy.xls')