#!/usr/bin/env python3.5# -*- encoding: utf-8 -*-#2 Import Lib And Defiend Variablesfrom openpyxl import Workbook,load_workbookfrom openpyxl.styles import *import pymysqlimport datetimeimport xlwtimport warningswarnings.filterwarnings('ignore')#连接DBdb = pymysql.connect( #连接数据库 host = 'localhost', port = 3306, user = 'root', passwd = 'ssm1991512', db = 'zabbix')today = datetime.date.today() #今日时间sql = "SELECT space_infor.hname,cpumem_infor.cpu,cpumem_infor.mem,space_infor.space FROM (SELECT cpu_infor.hname AS hname,cpu_infor.cpu_data AS cpu,mem_infor.mem_data AS mem FROM (SELECT h.name as hname,concat(CEILING(avg(t.value_max)*100),'%') as cpu_data FROM hosts h JOIN items i ON h.hostid = i.hostid JOIN trends t ON t.itemid = i.itemid WHERE i.name='Processor load (15 min average per core)' AND from_unixtime(t.clock) >= '{0} 00:00:00' GROUP BY h.name ORDER BY h.name) AS cpu_infor, (SELECT h.name as hname,CONCAT(ROUND(((max(his.value)-min(his.value)+0.5*1024*1024*1024)/(max(his.value)+10*1024*1024*1024))*100),'%') as mem_data FROM hosts h JOIN items i ON h.hostid =i.hostid JOIN history_uint his ON i.itemid = his.itemid WHERE i.name IN ('Available memory','Total memory') AND from_unixtime(his.clock) >= '{0} 00:00:00' GROUP BY h.name) AS mem_infor WHERE cpu_infor.hname = mem_infor.hname) AS cpumem_infor, (SELECT h.name AS hname,MAX(concat(round(100 - his.value),'%')) as space FROM hosts h JOIN items i ON h.hostid = i.hostid JOIN history his ON his.itemid = i.itemid WHERE i.key_ LIKE 'vfs.fs.size[%,pfree]' AND i.key_ NOT LIKE '%FSNAME%' AND from_unixtime(his.clock) >= '{0} 00:00:00' GROUP BY h.name) AS space_infor WHERE cpumem_infor.hname = space_infor.hname AND space_infor.hname not in ('NJ_192.168.188.50-SIP_NAT1_S','NJ_192.168.188.49-SIP_NAT1_M','NJ_192.168.188.51-SIP_NAT2_M','NJ_192.168.188.56-SIP_NAT4_S');".format(today)#print(sql) #测试sql的时间变量cursor = db.cursor()cursor.execute(sql)data = cursor.fetchall()print(data)#print(len(data))#对其方式style = xlwt.XFStyle() #初始化样式align = xlwt.Alignment() #初始化对其方式align.horz = 0x02 #水平居中align.vert = 0x01 #垂直居中style.alignment = align######################################################设置背景色style_bg = xlwt.XFStyle()pattern = xlwt.Pattern()pattern.pattern = xlwt.Pattern.SOLID_PATTERNpattern.pattern_fore_colour = 40xlwt.Style.colour_map['green']style_bg.pattern = patternalign = xlwt.Alignment() #初始化对其方式align.horz = 0x02 #水平居中align.vert = 0x01 #垂直居中style_bg.alignment = align#####################################################3 Operatewb = xlwt.Workbook(encoding = 'utf-8') #创建表单nj_sheet = wb.add_sheet('南基',cell_overwrite_ok = True) #创建2个sheet页bj_sheet = wb.add_sheet('北基',cell_overwrite_ok = True)# nj_sheet.write_merge(开始行,结束行,开始列,结束列,value,style) #合并单元格方式## 标题-第0行nj_sheet.write_merge(0,0,0,20,'中国移动和对讲toB生产环境主机巡查表',style) #未设置style,默认## 标题-第1行for cel1_2 in range(0,20): #为第row1、row2添加背景色 nj_sheet.write(1,cel1_2,'',style_bg) nj_sheet.write(2,cel1_2,'',style_bg)nj_sheet.write_merge(1,1,5,7,'检查项',style_bg) #合并并添加背景色nj_sheet.write_merge(1,1,8,10,'业务针对性并发',style_bg) nj_sheet.write_merge(1,1,11,12,'业务处理时延',style_bg) nj_sheet.write_merge(1,1,13,20,'检查是否存在异常',style_bg) ##标题-第2行row2 = ['序号','资源池','主机名','带宽分配(mbps)','弹性块存储','CPU占用','内存占用','磁盘占用','单台服务处理并发值','单台可承载的并发容量','是否有告警','数据处理时延','是否有告警','账号是否安全(有无异常登录)','命令执行历史记录查询','有无异常端口','有无异常进程','开机启动项','定时任务','有无异常文件','服务运行情况']for col in range(0,len(row2)): nj_sheet.write(2,col,row2[col],style_bg) col_width = nj_sheet.col(col) #设置列宽 col_width.width = 256 * 20#print(len(data))#print(data[1][1])#a = data[0][0]#b = a.split('-')[1]#print(b)bandwidth1 = ('log_backup_0001','log_backup_0002','db_backup_0003','db_backup_0004','DB_Backup_0001','DB_Backup_0002','DB_Backup_0003','S_DBSync_001','S_DBSync_002','S_DBSync_003','pocMDS17','pocMDS18','pocMDS19','pocMDS20')bandwidth2 = ('S_EFK_001','S_EFK_002','S_EFK_003')bandwidth5 = ('DB_Agg_001','Web_Contre_0001','DB_Agg_002','db_middleware_0001','Web_Contre_0003','DB_Partition_Core_0001','Video_Stream_Storage_0019','db_middleware_0002','DB_Agg_003','db_backup_0004','Web_Contre_0002','eboss1','eboss2','Database4','Database3','Database2','Database1','DatabaseMW2','DatabaseMW1','CMPOC2','CMPOC1','OPERATION2','OPERATION1','pocs1')bandwidth10 = ('DB_ADD_07','DB_ADD_08','DB_ADD_09','N_EFK_003','N_EFK1_0001','N_EFK1_0002','omc_0001','omc_0002','operation_0001','operation_0002','SP_Core_0001','SP_Core_0002','SP_Core_0003','SP_Core_0004')bandwidth20 = ('DS_XMDS_0002','DS_XMDS_0003','DS_XMDS_0004','DS_XMDS_0005','MQ_0002','MQ_0003','pocDM1','pocDM2','pocDM3','pocDM4','pocDM5','pocDM6','pocDM7','pocDM8','pocDM9','pocDM10','pocIM1','pocIM2','pocIM3','pocIM4','pocIM5','pocIM6','pocIM7','pocIM8','pocLBS1','pocLBS2','pocLBS3','pocLBS4','pocLBS5','pocLBS6','PocWeb1','PocWeb2','SP_Core_0005','SP_Core_0006','SP_Core_0007','SP_Core_0008','SP_Core_0009','SP_Core_0010','SP_Core_0011','SP_Core_0012','SP_Core_0013','SP_Core_0014','SP_Core_0015','SP_Core_0016','SP_Filemsg_0001','SP_Filemsg_0002','SP_Filemsg_0003','SP_Filemsg_0004','SP_Filemsg_0005','SP_Filemsg_0006','SP_Filemsg_0007','SP_Filemsg_0008','Video_Stream_Storage_0001','Video_Stream_Storage_0002','Video_Stream_Storage_0003')bandwidth30 = ('DB_Partition_Core_0002','DB_Partition_Core_0003','DB_Partition_History_0001','DB_Partition_History_0002','DB_Partition_History_0003','ds_report_0001','ds_report_0002','DS_REPORT_0003','DS_REPORT_0004','DS_REPORT_0005','DS_REPORT_0006','DS_XMDS_0001','PocSP1','PocSP10','PocSP11','PocSP12','PocSP13','PocSP14','PocSP15','PocSP16','PocSP2','PocSP3','PocSP4','PocSP5','PocSP6','PocSP7','PocSP8','PocSP9','SP_Core_0012')bandwidth40 = ('HaProxy_SIP_01','HaProxy_SIP_02','HaProxyDM2','Proxy_SIP_01','Web_Contre_0004')bandwidth50 = ('DS_XMDS_0006','DS_XMDS_0007','DS_XMDS_0008','globe01','globe02','globe03','HaProxyDM1','HaProxyDm4001_01','HaProxyDm4001_02','HaProxyDmOMA19998_01','HaProxyDmOMA19998_02','HaProxyLBS_01','HaProxyLBS_02','HaProxyVideo2','HaProxyWeb1','HaProxyWeb2','HaProxyWebDM1880_01','HaProxyWebDM1880_02','mds_0001','mds_0002','mds_0003','mds_0004','mds_0012','mds_0013','mds_0014','mds_0015','mds_0016','MDSR_0001','MDSR_0002','MDSR_0003','MDSR_0004','mdsr_0005','mdsr_0007','mdsr_0008','MQ_0001','pocMDS1','pocMDS12','pocMDS13','pocMDS14','pocMDS15','pocMDS16','pocMDS2','pocMDS3','pocMDS4','pocMDS5','pocMDS6','pocMDS7','pocMDS8','pocMDSR1','pocMDSR2','pocMDSR3','pocMDSR4','pocMDSR5','pocMDSR6','pocMDSR7','pocMDSR8','PocWeb3','PocWeb4')bandwidth95 = ('mds_0005','mds_0007','mds_0008','mds_0009','mds_0010','mds_0011')bandwidth100 = ('HaProxy_Video_01','pocMDS10','pocMDS11','pocMDS9','PocVideo1','PocVideo2','PocVideo3','PocVideo4','PocVideo5','PocVideo6','PocVideo7','PocVideo8','Video_Stream_Storage_0004','Video_Stream_Storage_0005','Video_Stream_Storage_0006','Video_Stream_Storage_0007','Video_Stream_Storage_0008','Video_Stream_Storage_0009','Video_Stream_Storage_0010','Video_Stream_Storage_0011','Video_Stream_Storage_0012','Video_Stream_Storage_0013','Video_Stream_Storage_0014','Video_Stream_Storage_0017','Video_Stream_Storage_0018')bandwidth126 = ('Ha_Proxy_Video_01','mds_0006','mdsr_0006','Ha_Proxy_Video_02')bandwidth500 = ('N_ReduceProxy_01','N_ReduceProxy_02','S_ReduceProxy_01','S_ReduceProxy_02')disk_size_500g = ('N_ReduceProxy_01','N_ReduceProxy_02','Ha_Proxy_Video_01','mds_0003','MDSR_0001','SP_Core_0016','Video_Stream_Storage_0010','SP_Core_0004','mdsr_0008','SP_Core_0003','SP_Core_0010','mds_0004','MDSR_0003','SP_Filemsg_0001','N_EFK1_0001','DS_REPORT_0005','DB_Partition_History_0002','mds_0001','DS_REPORT_0006','Web_Contre_0001','db_middleware_0001','Video_Stream_Storage_0013','SP_Core_0011','mds_0005','Video_Stream_Storage_0009','Web_Contre_0003','N_EFK1_0002','Video_Stream_Storage_0012','SP_Core_0001','DS_REPORT_0004','mds_0013','SP_Core_0007','SP_Core_0009','DB_Partition_History_0001','SP_Filemsg_0003','Ha_Proxy_Video_02','omc_0002','SP_Filemsg_0005','Video_Stream_Storage_0018','DB_Partition_Core_0001','SP_Core_0002','Video_Stream_Storage_0006','mds_0012','Video_Stream_Storage_0007','Video_Stream_Storage_0017','mds_0006','DS_XMDS_0002','mds_0002','Video_Stream_Storage_0008','SP_Core_0013','DB_Partition_Core_0002','Video_Stream_Storage_0004','DB_Partition_Core_0003','Video_Stream_Storage_0014','operation_0002','mds_0010','DS_XMDS_0008','SP_Core_0006','DS_XMDS_0007','SP_Filemsg_0008','mdsr_0007','SP_Filemsg_0002','Video_Stream_Storage_0019','ds_report_0001','mdsr_0005','mds_0008','Video_Stream_Storage_0003','SP_Core_0005','Video_Stream_Storage_0005','mdsr_0006','N_EFK_003','mds_0014','MDSR_0002','Web_Contre_0004','SP_Core_0014','DS_XMDS_0003','Video_Stream_Storage_0002','mds_0011','Video_Stream_Storage_0011','DS_XMDS_0006','DS_XMDS_0004','SP_Core_0012','DS_XMDS_0005','mds_0016','db_middleware_0002','ds_report_0002','SP_Core_0015','SP_Filemsg_0007','Video_Stream_Storage_0001','mds_0015','mds_0009','SP_Filemsg_0004','SP_Filemsg_0006','SP_Core_0008','Web_Contre_0002','mds_0007','DB_Partition_History_0003','DS_REPORT_0003','MQ_0002','DS_XMDS_0001','MDSR_0004','operation_0001','MQ_0001','MQ_0003','omc_0001','eboss1','eboss2','HaProxyVideo2','HaProxy_SIP_01','Proxy_SIP_01','HaProxyDm4001_01','HaProxyDm4001_02','HaProxyWebDM1880_01','HaProxyWeb1','HaProxyWebDM1880_02','HaProxyDmOMA19998_01','HaProxyDmOMA19998_02','HaProxyLBS_01','HaProxyLBS_02','HaProxy_SIP_02','HaProxyWeb2','HaProxyDM1','HaProxyDM2','HaProxy_Video_01','S_DBSync_001','MonitorTransfer','OperationSupport','globe03','globe02','globe01','S_ReduceProxy_01','S_ReduceProxy_02','pocDM7','pocDM8','PocSP9','PocSP10','PocSP11','PocSP12','PocSP13','PocSP14','PocSP15','PocSP16','pocIM5','pocIM6','pocMDS12','pocMDS13','pocMDS14','pocMDS15','pocMDS16','pocMDS17','pocDM9','pocIM7','pocIM8','pocMDS18','pocMDS19','pocMDS20','pocMDSR5','pocMDSR6','pocMDSR7','pocMDSR8','pocDM10','S_EFK_001','S_EFK_002','S_EFK_003','pocIM4','pocIM3','pocIM2','pocIM1','pocMDS8','DatabaseMW2','pocMDS5','pocMDS6','DatabaseMW1','PocSP8','PocSP6','PocSP7','pocMDS7','PocSP5','PocSP4','PocSP3','PocSP2','PocSP1','pocDM6','pocMDS4','pocMDS3','pocDM4','pocMDS2','pocMDS1','pocDM5','pocDM3','pocDM2','pocDM1','PocWeb4','PocWeb3','PocWeb2','PocWeb1','pocLBS6','pocMDSR3','pocMDSR2','pocMDSR1','pocMDSR4','pocLBS5','pocLBS4','pocLBS3','pocLBS2','pocLBS1','pocMDS11','pocMDS10','pocMDS9','PocVideo8','PocVideo7','OPERATION2','OPERATION1','PocVideo6','PocVideo5','PocVideo4','PocVideo3','PocVideo1','PocVideo2','S_DBSync_002','S_DBSync_003','pocs1')############################################################################################disk_size_1t = ('CMPOC1','CMPOC2')disk_size_4t = ('Database1','Database2')disk_size_8t = ('db_backup_0003','log_backup_0002','DB_Backup_0003','Database4','Database3')disk_size_14t = ('DB_Backup_0002')disk_size_20t = ('DB_Agg_001','DB_Agg_002','DB_Agg_003','DB_ADD_07','DB_ADD_08','DB_ADD_09')disk_size_24t = ('DB_Backup_0001')disk_size_26t = ('log_backup_0001')disk_size_28t = ('db_backup_0004')##############################################################################################current_1k5 = ('Video_Stream_Storage_0010','mdsr_0008','Video_Stream_Storage_0013','mds_0005','Video_Stream_Storage_0009','Video_Stream_Storage_0012','mds_0013','Video_Stream_Storage_0018','Video_Stream_Storage_0006','mds_0012','Video_Stream_Storage_0007','Video_Stream_Storage_0017','mds_0006','Video_Stream_Storage_0008','Video_Stream_Storage_0004','Video_Stream_Storage_0014','mds_0010','log_backup_0002','mdsr_0007','mdsr_0005','mds_0008','Video_Stream_Storage_0005','mdsr_0006','mds_0014','log_backup_0001','mds_0011','Video_Stream_Storage_0011','mds_0016','mds_0015','mds_0009','mds_0007','S_DBSync_001','pocMDS17','pocMDS18','pocMDS19','pocMDS20','pocMDSR5','pocMDSR6','pocMDSR7','pocMDSR8','pocMDS8','pocMDS5','pocMDS6','pocMDS7','pocMDSR3','pocMDSR2','pocMDSR1','pocMDSR4','pocMDS9','S_DBSync_002','S_DBSync_003','pocs1')current_2k = ('DB_Agg_001','DB_Agg_002','db_middleware_0001','db_backup_0003','DB_Partition_Core_0001','db_middleware_0002','DB_Agg_003','db_backup_0004','DB_Backup_0001','DB_Backup_0002','DB_Backup_0003','PocSP9','Database4','Database3','Database2','Database1','DatabaseMW1','PocSP8','PocSP6','PocSP7','CMPOC2','CMPOC1','PocVideo1') current_1w = ('N_ReduceProxy_01','N_ReduceProxy_02','SP_Core_0016','SP_Core_0004','SP_Core_0003','SP_Core_0010','SP_Filemsg_0001','N_EFK1_0001','Web_Contre_0001','SP_Core_0011','Web_Contre_0003','N_EFK1_0002','SP_Core_0001','SP_Core_0007','SP_Core_0009','SP_Filemsg_0003','omc_0002','SP_Filemsg_0005','SP_Core_0002','DS_XMDS_0002','SP_Core_0013','operation_0002','SP_Core_0006','SP_Filemsg_0008','SP_Filemsg_0002','Video_Stream_Storage_0019','Video_Stream_Storage_0003','SP_Core_0005','N_EFK_003','SP_Core_0014','DS_XMDS_0003','Video_Stream_Storage_0002','DS_XMDS_0004','SP_Core_0012','DS_XMDS_0005','SP_Core_0015','SP_Filemsg_0007','Video_Stream_Storage_0001','SP_Filemsg_0004','SP_Filemsg_0006','SP_Core_0008','Web_Contre_0002','MQ_0002','operation_0001','MQ_0003','omc_0001','HaProxyDm4001_01','HaProxyDm4001_02','HaProxyWebDM1880_01','HaProxyDM1','HaProxyDM2','globe03','S_ReduceProxy_01','S_ReduceProxy_02','pocDM7','pocDM8','PocSP10','PocSP11','PocSP12','PocSP15','PocSP16','pocIM5','pocIM6','pocMDS12','pocMDS13','pocMDS14','pocMDS15','pocMDS16','pocDM9','pocIM7','pocIM8','S_EFK_001','S_EFK_002','S_EFK_003','pocIM4','pocIM3','pocIM2','pocIM1','PocSP3','PocSP2','PocSP1','pocMDS4','pocMDS3','pocMDS2','pocMDS1','pocDM3','PocWeb4','PocWeb3','PocWeb2','PocWeb1','pocLBS6','pocLBS5','pocLBS4','pocLBS3','pocLBS2','pocLBS1','pocMDS11','pocMDS10','PocVideo8','PocVideo4','PocVideo3','PocVideo2')current_2w = ('Web_Contre_0004','PocSP13','PocSP14','PocSP5','PocSP4')current_2w5 = ('Ha_Proxy_Video_01','mds_0003','MDSR_0001','mds_0004','MDSR_0003','mds_0001','Ha_Proxy_Video_02','mds_0002','DS_XMDS_0008','DS_XMDS_0007','MDSR_0002','DS_XMDS_0006','MDSR_0004','MQ_0001','HaProxyVideo2','HaProxy_SIP_01','Proxy_SIP_01','HaProxyWeb1','HaProxyWebDM1880_02','HaProxyDmOMA19998_01','HaProxyDmOMA19998_02','HaProxyLBS_01','HaProxyLBS_02','HaProxy_SIP_02','HaProxyWeb2','HaProxy_Video_01','MonitorTransfer','OperationSupport','pocDM10','pocDM6','pocDM4','pocDM5','pocDM2','pocDM1','OPERATION2','OPERATION1')current_3w = ('DS_REPORT_0005','DB_Partition_History_0002','DS_REPORT_0006','DS_REPORT_0004','DB_Partition_History_0001','DB_Partition_Core_0002','DB_Partition_Core_0003','ds_report_0001','ds_report_0002','DB_Partition_History_0003','DS_REPORT_0003','DS_XMDS_0001','eboss1','eboss2','globe02','globe01','DB_ADD_07','DB_ADD_08','DB_ADD_09','DatabaseMW2','PocVideo7','PocVideo6','PocVideo5')for d_row in range(0,len(data)): Hname = data[d_row][0] #处理主机名 Name = Hname.split('-')[1] area = Hname.split('-')[0].split('_')[0] nj_sheet.write(d_row + 3,0,d_row + 1,style) #第0列:序号 if area == 'NJ': #第1列:资源池 nj_sheet.write(d_row + 3,1,'南基',style) wb.save('a.xls') else: nj_sheet.write(d_row + 3,1,'北基',style) wb.save('a.xls') for d_col in range(2,10): if d_col == 2: #第2列:主机名 nj_sheet.write(d_row + 3,d_col,Name,style) wb.save('a.xls') elif d_col == 3: #第3列:带宽 if Name in bandwidth1: nj_sheet.write(d_row + 3,d_col,1,style) wb.save('a.xls') elif Name in bandwidth2: nj_sheet.write(d_row + 3,d_col,2,style) wb.save('a.xls') elif Name in bandwidth5: nj_sheet.write(d_row + 3,d_col,5,style) wb.save('a.xls') elif Name in bandwidth10: nj_sheet.write(d_row + 3,d_col,10,style) wb.save('a.xls') elif Name in bandwidth20: nj_sheet.write(d_row + 3,d_col,20,style) wb.save('a.xls') elif Name in bandwidth30: nj_sheet.write(d_row + 3,d_col,30,style) wb.save('a.xls') elif Name in bandwidth40: nj_sheet.write(d_row + 3,d_col,40,style) wb.save('a.xls') elif Name in bandwidth50: nj_sheet.write(d_row + 3,d_col,50,style) wb.save('a.xls') elif Name in bandwidth95: nj_sheet.write(d_row + 3,d_col,95,style) wb.save('a.xls') elif Name in bandwidth100: nj_sheet.write(d_row + 3,d_col,100,style) wb.save('a.xls') elif Name in bandwidth126: nj_sheet.write(d_row + 3,d_col,126,style) wb.save('a.xls') elif Name in bandwidth500: nj_sheet.write(d_row + 3,d_col,500,style) wb.save('a.xls') else: nj_sheet.write(d_row + 3,d_col,'-',style) wb.save('a.xls') elif d_col == 4: if Name in disk_size_500g: nj_sheet.write(d_row + 3,d_col,500,style) wb.save('a.xls') elif Name in disk_size_1t: nj_sheet.write(d_row + 3,d_col,'1T',style) wb.save('a.xls') elif Name in disk_size_4t: nj_sheet.write(d_row + 3,d_col,'4T',style) wb.save('a.xls') elif Name in disk_size_8t: nj_sheet.write(d_row + 3,d_col,'8T',style) wb.save('a.xls') elif Name in disk_size_14t: nj_sheet.write(d_row + 3,d_col,'14T',style) wb.save('a.xls') elif Name in disk_size_20t: nj_sheet.write(d_row + 3,d_col,'20T',style) wb.save('a.xls') elif Name in disk_size_24t: nj_sheet.write(d_row + 3,d_col,'24T',style) wb.save('a.xls') elif Name in disk_size_26t: nj_sheet.write(d_row + 3,d_col,'26T',style) wb.save('a.xls') elif Name in disk_size_28t: nj_sheet.write(d_row + 3,d_col,'28T',style) wb.save('a.xls') elif d_col == 5: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,data[d_row][1],style) wb.save('a.xls') elif d_col == 6: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,data[d_row][2],style) wb.save('a.xls') elif d_col == 7: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,data[d_row][3],style) wb.save('a.xls') elif d_col == 9: if Name in current_1k5: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,'1千5',style) wb.save('a.xls') elif Name in current_2k: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,'2千',style) wb.save('a.xls') elif Name in current_1w: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,'1万',style) wb.save('a.xls') elif Name in current_2w: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,'2万',style) wb.save('a.xls') if Name in current_2w5: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,'2万5',style) wb.save('a.xls') if Name in current_3w: #第3列:带宽 nj_sheet.write(d_row + 3,d_col,'3万',style) wb.save('a.xls') for nomal_col in range(10,21): #处理9-20列,后面内容为"无“ if nomal_col == 11: nj_sheet.write(d_row + 3,nomal_col,'',style) else: nj_sheet.write(d_row + 3, nomal_col,'无',style)