import pandas as pd import numpy as np import os,time import xlwings as xw # C:\server_support\server_support_20211022\04_aliyun\01_ECS\20221025 # 用来存放 文件名截取的账号 data_1 = [] # 用来存放 提取的 所有文件的 数据内容 的列表 data_2 = [] # data_3 用来存放 单个文件 读取 出来 的 多行数据, data_3 = [] def lst_file(file_dir): # 列出 csv 文件目录下面的,所有的csv文件,返回的是一个列表 lst_csv = os.listdir(file_dir) # 遍历 这个 列表,并读出 我们要提取的内容,追加到 存放数据内容的列表中 for i in range(0,len(lst_csv)): data = pd.read_csv(file_dir+'/'+lst_csv[i]) data_1.append(lst_csv[i].split('_ecs')[0]) # 获取多列数据,并存入一个数组中,需要用二维数组 col_2 = data[['名称','操作系统', '状态', '描述', '公网IP', '内网IP','弹性IP','CPU','内存','付费类型','创建时间(UTC)','到期时间(UTC)']] data_2.append(np.array(col_2)) return data_2 ################################################## # 写入数据 def wr_data(data_2): # 创建一个 新的 excel 文件 app = xw.App(visible=False, add_book=False) wb = app.books.add() lst = ['阿里云账号','名称','操作系统', '状态', '描述', '公网IP', '内网IP','弹性IP','CPU','内存','付费类型','创建时间(UTC)','到期时间(UTC)'] # 标题行,从A1 单元格开始往后写 wb.sheets['sheet1'].range('A1').value = lst # 从第二行,第2列 开始写入,我们提取出来的数据内容 for i in range(0, len(data_2)): # 把 每一个文件 里面 读取出来的行,取出来,存放在另一个列表 data_3 = data_2[i] # 对一个文件 里面的行的列表,再循环遍历 for j in range(len(data_3)): # 当前表 里面有数据的行数 rows = wb.sheets['sheet1'].used_range.last_cell.row wb.sheets['sheet1'].range(rows+1, 2).value = data_3[j] # 每一行的第一个单元格都插入一个,该文件 截取出来的 账号 wb.sheets['sheet1'].range(rows + 1, 1).value = data_1[i] # 设置自动列宽 wb.sheets['sheet1'].range('A1:M{}'.format(rows)).columns.autofit() #设置行高 wb.sheets['sheet1'].range('A1','A{}'.format(rows)).row_height = 20 # 设置 单元格 ,底纹 填充 用 rgb 数字代替, wb.sheets['sheet1'].range('A1:M1').color = (0, 0, 128) # 设置 单元格字体颜色 wb.sheets['sheet1'].range('A1:M1').api.Font.Color = 0xffffff ## 字体加粗 wb.sheets['sheet1'].range('A1:M1').api.Font.Bold = True ## 设置字体大小 wb.sheets['sheet1'].range('A1:M1').api.Font.Size = 12 # sheet1 表,改名 wb.sheets['sheet1'].name = 'ECS' ### 替换 字符串类似于 Data Center Edition 64bit Chinese Edition 为空 rows = wb.sheets['ECS'].used_range.last_cell.row for cell in wb.sheets['ECS'].range('A1:M{}'.format(rows)): dic1 = {"chr1": "Data Center Edition 64bit Chinese Edition", "chr2": "with Container DataCenter Edition 64bit Chinese", "chr3": "Data Center Edition 64bit English Edition", "chr4": "DataCenter Edition 64bit Chinese Edition", "chr5": "with Container DataCenter Edition 64bit English Edition", "chr6": "DataCenter Edition 64bit English Edition", "chr7": "LTS 64bit DengBao2.0 Class 3 Edition" } try: for intem in dic1.items(): k, v = intem if dic1[k] in cell.value: cell.value = cell.value.replace(dic1[k], '') except: pass ## 再次 设置自动列宽 wb.sheets['ECS'].range('A1:M{}'.format(rows)).columns.autofit() # 保存文件 new_file = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) wb.save('C:/ser/04_ali/01_ECS/count/ecs_count-}.xlsx'.format(new_file)) time.sleep(6) wb.close() app.quit() file_dir = input('请输入ECS文件夹路径:') wr_data(lst_file(file_dir))