源码_处理程序.py
import xlrd,xlwt
from xlutils.copy import copy
import 源码_模块程序
NAME_I=input("输入NAME:")
NAME_O=input("输出NAME:")
wb=xlrd.open_workbook(NAME_I) # 获取工作簿对象
ws=wb.sheet_by_name('new sheet') # 获取工作表对象
# 获取原始列值
col_1=ws.col_values(6) # 处理:AD号码
col_2=ws.col_values(7) # 处理:宽带账号
col_3=ws.col_values(23) # 跟踪:大VLAN
col_4=ws.col_values(24) # 跟踪:小VLAN
col_5=ws.col_values(27) # 跟踪:OLT设备
# 复制工作簿、新建工作表 对象
nwb=copy(wb);
nws=nwb.add_sheet('编辑')
# 获取原始行序
row_s=[]
for i in range(len(col_1)):
row_s.append(i)
# 处理AD号码
(row_s1,col_s1)=源码_模块程序.quKF(row_s,col_1)
(row_s2,col_s2)=源码_模块程序.dou(row_s1,col_s1)
(row_s3,col_s3)=源码_模块程序.shai(row_s2,col_s2)
# 处理宽带帐号
(row_r1,col_r1)=源码_模块程序.quKF(row_s,col_2)
(row_r2,col_r2)=源码_模块程序.dou(row_r1,col_r1)
(row_r3,col_r3)=源码_模块程序.shai(row_r2,col_r2)
# 将AD号码、宽带帐号续接为一列
(row_xu,col_xu)=源码_模块程序.xu(row_s3,col_s3,row_r3,col_r3)
# 去除重复帐号
(row_14,col_14)=源码_模块程序.chong(row_xu,col_xu)
# 将结果写入工作表中
nws=源码_模块程序.xie(row_14,col_14,nws,col_3,col_4,col_5)
# 保存工作簿
nwb.save(NAME_O)
源码_模块程序.py
###################### # 去除列的空格、方括号 # #######################
def quKF(row_s1,col_s1):
'''
输入col_s1: 将要去除空格、方括号的列值列表
输出col_r1: 在去除空格、方括号后,返回列值列表(行序不变)
'''
col_r1=[item.strip().replace('[', '').replace(']', '').replace(' ', '') for item in col_s1]
row_r1=row_s1
return row_r1,col_r1
################### # 按逗号分列,并更新原始行序 # ####################
def dou(row_s2,col_s2):
'''
输入row_s2、col_s2: 行序列表、需要按逗号分列的列值列表
输出row_r2、col_r2: 对应的原始行序列表、分列归一后的列值列表
'''
col_r2=[]
row_r2=[]
i=0
for u in col_s2:
col_u2=u.split(',')
for uu in col_u2:
col_r2.append(uu)
row_r2.append(row_s2[i])
i+=1
return row_r2,col_r2 # row_r2为行序,col_r2为列值
############### # 筛选符合条件的列值,并更新原始行序 # ################
def shai(row_s3,col_s3):
'''
输入row_s3、col_s3: 行序列表、列值列表
输出row_r3、col_r3: 更新后的行序列表、更新后的列值列表
'''
col_r3=[]
row_r3=[]
f=0
for k in col_s3:
if (k.startswith('0315') or k.startswith('ts') or k.startswith('tsaz')) and ('@' not in k):
col_r3.append(k)
row_r3.append(row_s3[f])
f+=1
return row_r3,col_r3 # row_r3为行序,col_r3为列值
#################### # 续接两列,并更新原始行序 # #####################
def xu(row_f,col_f,row_b,col_b):
'''
输入1、2:row_f,col_f: 续接在前的行序、列值
输入3、4:row_b,col_b: 续接在后的行序、列值
'''
row_f.extend(row_b)
col_f.extend(col_b)
return row_f,col_f # row_r4为行序,col_r4为列值
##################### # 将结果逐个写在xls表格里 # #####################
def xie(row_s5,col_s5,nws,coln_1,coln_2,coln_3):
'''
row_s5、col_s5: 要写入的行序、列值
nws: 要写入的工作表对象
coln_1、coln_2、coln_3: 跟踪信息(如大VLAN、小VLAN、OLT名称等)
'''
rs=0
for yi in row_s5:
nws.write(rs,0,col_s5[rs])
nws.write(rs,1,coln_1[yi])
nws.write(rs,2,coln_2[yi])
nws.write(rs,3,coln_3[yi])
rs+=1
return nws
#################### # 帐号去重,并更新原始行序 # #####################
def chong(row_s6,col_s6):
row_r6=[]
col_r6=[]
g=0
for t in col_s6:
if t not in col_r6:
col_r6.append(t)
row_r6.append(row_s6[g])
g+=1
return row_r6,col_r6
结果展示:
总结:虽然处理这个xls表格在工作中已经接近尾声,且部分程序借鉴了ChatGPT提供的思路,但我仍从中学习到了很多知识!HAPPY (´▽`ʃ♡ƪ)!
参考资料:
- 太多了,这里暂时就不一一列出来了