背景:
最近领导叫整理excel文档,从中筛选出某项数据进行查询整理导出,其实很简单,但是难就难在数据量太大,sheets表格太多(50多个表),1w+数据,根本无法筛选导出,而且我不会使用excel的函数库,本来可以全部查找但是无法导出,这就难到我了,没办法,
作为一个运维,要想进办法去偷懒,能交给机器做的就绝不自己动手。所以考虑利用python进行处理文档,直接遍历所有数据,然后查询导出,省时省力。
废话不多说,直接上python代码,由于时间紧,我仅仅写了我需要处理的数据,如果有需要使用的需修改成自己可以使用,这里不做过多的说明。
模块安装:pip install xlrd
# -*- coding: UTF-8 -*-
import os
import xlrd, sys,re
#查找文件,精确到file
Filename = "C:\Users\Administrator\Desktop\\123.xlsx"
#打开excel文件
bk = xlrd.open_workbook(Filename)
#把所有的sheets表梳理出来
shxrange = range(bk.nsheets)
#这是打印所有的表名,不使用,bk.sheets()[x],x为index,默认从0开始
for x in shxrange:
p = bk.sheets()[x].name.encode('utf-8')
#print "Sheets Number(%s): %s" % (x, p.decode('utf-8'))
#同上,循环表名
for numb in shxrange:
#每个表里内容赋值给table
table = bk.sheets()[numb]
#把表里所有行赋值给nrows
nrows = table.nrows
#循环所有行
for i in range(nrows):
#把表里所有值赋值给text
text = str(table.row_values(i))
#print(text)
#从text查找所需字符串赋值给ip
ip = re.findall('10.32.220.(\d+)',text)
#循环查找出来文本,打印出来所需要的
for o in ip:
print('10.32.220.'+o[0:13])
这样就把我需要的数据筛选出来了,然后可以根据需要进行导出,或者继续查找。