# coding=utf-8 import re from openpyxl import load_workbook from openpyxl import Workbook # 保存为excel表格 from openpyxl.workbook.defined_name import DefinedName # from openpyxl.utils import absolute_coordinate, quote_sheetname class Excel(): def __init__(self): self.wb = Workbook() # 第一次创建新 excel文件时用 # self.ws = self.wb.active # self.wb = load_workbook('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\_excel_data_new.xlsx') # 已有excel文件,往里添加表时用 def save_excel(self): self.wb.save('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\_excel_data_new.xlsx') def read_excel(self, filepath, name): file_name = filepath + name + '.xlsx' wb = load_workbook(file_name) # ws = wb.active # # 等同于 ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表 sheet_names = wb.sheetnames # ----- ['uv_付费', 'uv_免费', 'uv_质, 'Sheet'] print('-----', sheet_names) for k in range(len(sheet_names)): ws = wb[sheet_names[k]] # index为0为第一张表 name = sheet_names[k] print(name , '---', k) # 创建新表写入数据 self.wb = Workbook() self.ws = self.wb.create_sheet("%s" % name, 0) # 插入到最开始的位置 # 读取原表数据 l_num = ws.max_column # 最大列 h_num = ws.max_row # 最大行 for i in range(1, h_num + 1): # h_num + 1 line_data = [] for j in range(1, l_num + 1): lie_title = ws.cell(row=i, column=j) # 每列标题 <Cell '固定费用'.A1> # print(lie_title) a_value = lie_title.value # 此单元格里边的值 coord = lie_title.coordinate # 此单元格坐标 A1 B1 # print(aa, type(aa)) # class= str # print(coord, type(coord)) # class= str line_data.append(a_value) print(line_data) # 写入新表中 self.ws.append(line_data) self.wb.save('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\%s.xlsx' % name) # 写入新表中 # self.save_excel() # 调用 添加定义名称 # self.add_name() def add_name(self): ##### 添加定义名称 xl_file = 'C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\_excel_data_new.xlsx' wb = load_workbook(xl_file) # ws = wb.active # # 等同于 ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表 sheet_names = wb.sheetnames # print('-----', sheet_name) for i in range(len(sheet_names)): wb = load_workbook(xl_file) # sheet_names = wb.sheetnames w_name = sheet_names[i] ws = wb[w_name] # l_num = ws.max_column # 最大列 h_num = ws.max_row # 最大行 # print(ws.max_row) # print(ws.max_column) a_list = [] all_lie_list = [] # wb = Workbook() for j in range(1, l_num + 1): # 列 lie_list = [] # for i in range(1, h_num + 1): # 行 title = ws.cell(row=1, column=j) # 每列标题 name = title.value # print(j) a = ws.cell(row=1, column=j) coord = a.coordinate # 此单元格坐标 A1 B1 # print(coord) l = re.findall(r'^[A-Z]*', coord)[0] h = re.findall(r'[0-9]*$', coord)[0] lie_list.append([coord, name]) all_lie_list.append([l, name]) # 添加 列名(A,B), 每一列第一行的值 print(all_lie_list) # [['A', 'SKU'], ['B', 'XL'], ['C', 'freeUV'], ['D', 'changeo'], ['E', 'changeAV'], ['F', 'callchangeo'], ['G', 'callchangeAV'], ['H', 'silencechangeo'], ['I', 'silencechangeAV'], ['J', 'buyingprice']] for lie in all_lie_list: bb = '%s!$' % w_name + lie[0] + '$1:$' + lie[0] + '$' + str(h_num) dname = DefinedName(name='%s' % lie[1]) dname.value = bb wb.defined_names.append(dname) wb.save('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\change_excel\\%s_01.xlsx' % w_name) # 'C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\change_excel\\%s_01.xlsx' % w_name wb.close() if __name__ == '__main__': import os filepath = "C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\read_excel\\" pathDir = os.listdir(filepath) excel = Excel() for alldir in pathDir: name = alldir.replace('.xlsx', '') print(name) # a = input('输入excel表格原名 :') # name = 'zidongduqu' # f_name = "C:\\Users\\Administrator\\Desktop\\spider_excel\\excel_originally\\_excel_数据" # xl_savefile = "C:\\Users\\Administrator\\Desktop\\spider_excel\\excel_new\\_excel_数据" + ".xlsx" # 新名 excel_add_name excel.read_excel(filepath, name) # excel.add_name()
#######################################################################################################################################################
########################################################################################
# coding=utf-8 import re from openpyxl import load_workbook from openpyxl import Workbook # 保存为excel表格 from openpyxl.workbook.defined_name import DefinedName # from openpyxl.utils import absolute_coordinate, quote_sheetname import os class Excel(): def __init__(self, filepath, xl_file): self.filepath = filepath self.xl_file = xl_file self.wb = Workbook() # 第一次创建新 excel文件时用 # self.ws = self.wb.active # self.wb = load_workbook('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\_excel_data_new.xlsx') # 已有excel文件,往里添加表时用 def save_excel(self): self.wb.save('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\_excel_data_new.xlsx') def read_excel(self, filepath, name): file_name = filepath + name + '.xlsx' wb = load_workbook(file_name) # ws = wb.active # # 等同于 ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表 sheet_names = wb.sheetnames # ----- ['uv_付费', 'u 'Sheet'] print('-----', sheet_names) for k in range(len(sheet_names)): ws = wb[sheet_names[k]] # index为0为第一张表 name = sheet_names[k] print(name , '---', k) # 创建新表写入数据 self.wb = Workbook() self.ws = self.wb.create_sheet("%s" % name, 0) # 插入到最开始的位置 # 读取原表数据 l_num = ws.max_column # 最大列 h_num = ws.max_row # 最大行 for i in range(1, h_num + 1): # h_num + 1 line_data = [] for j in range(1, l_num + 1): lie_title = ws.cell(row=i, column=j) # 每列标题 <Cell '固定费用'.A1> # print(lie_title) a_value = lie_title.value # 此单元格里边的值 coord = lie_title.coordinate # 此单元格坐标 A1 B1 # print(aa, type(aa)) # class= str # print(coord, type(coord)) # class= str line_data.append(a_value) print(line_data) # 写入新表中 self.ws.append(line_data) self.wb.save('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\%s.xlsx' % name) # 写入新表中 # self.save_excel() # 调用 添加定义名称 # self.add_name() def add_name(self, xl_file_path, name): ##### 添加定义名称 # xl_file = 'C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\_excel_data_new.xlsx' xl_file = xl_file_path + name + '.xlsx' print(xl_file) wb = load_workbook(xl_file) # ws = wb.active # # 等同于 ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表 sheet_names = wb.sheetnames # print('-----', sheet_name) for i in range(1): # len(sheet_names wb = load_workbook(xl_file) # sheet_names = wb.sheetnames w_name = sheet_names[i] ws = wb[w_name] # l_num = ws.max_column # 最大列 h_num = ws.max_row # 最大行 # print(ws.max_row) # print(ws.max_column) a_list = [] all_lie_list = [] # wb = Workbook() for j in range(1, l_num + 1): # 列 lie_list = [] # for i in range(1, h_num + 1): # 行 title = ws.cell(row=1, column=j) # 每列标题 name = title.value # print(j) a = ws.cell(row=1, column=j) coord = a.coordinate # 此单元格坐标 A1 B1 # print(coord) l = re.findall(r'^[A-Z]*', coord)[0] h = re.findall(r'[0-9]*$', coord)[0] lie_list.append([coord, name]) all_lie_list.append([l, name]) # 添加 列名(A,B), 每一列第一行的值 print(all_lie_list) # [['A', 'SKU'], ['B', 'XL'], ['C', 'freeUV'], ['D', 'changeo'], ['E', 'changeAV'], ['F', 'callchangeo'], ['G', 'callchangeAV'], ['H', 'silencechangeo'], ['I', 'silencechangeAV'], ['J', 'buyingprice']] for lie in all_lie_list: bb = '%s!$' % w_name + lie[0] + '$1:$' + lie[0] + '$' + str(h_num) dname = DefinedName(name='%s' % lie[1]) dname.value = bb wb.defined_names.append(dname) wb.save('C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\change_excel\\%s_01.xlsx' % w_name) # 'C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\change_excel\\%s_01.xlsx' % w_name wb.close() def select_excel(self): # filepath = "C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\read_excel\\" # filepath = self.filepath filepath = self.xl_file pathDir = os.listdir(filepath) for alldir in pathDir: name = alldir.replace('.xlsx', '') print(name) # a = input('输入excel表格原名 :') # name = 'zidongduqu' # f_name = "C:\\Users\\Administrator\\Desktop\\spider_excel\\excel_originally\\_excel_数据" # xl_savefile = "C:\\Users\\Administrator\\Desktop\\spider_excel\\excel_new\\_excel_数据" + ".xlsx" # 新名 excel_add_name ######## 一个excel文件里多个表 单独 拆分开 # self.read_excel(filepath, name) ######## 单独拆开的表添加定义名称 self.add_name(filepath, name) if __name__ == '__main__': # import os # filepath = "C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\read_excel\\" # pathDir = os.listdir(filepath) filepath = "C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\read_excel\\" xl_file_path = 'C:\\Users\\Administrator\\Desktop\\all_spider_excel_05\\new_excel\\' excel = Excel(filepath, xl_file_path) excel.select_excel() # for alldir in pathDir: # name = alldir.replace('.xlsx', '') # print(name) # a = input('输入excel表格原名 :') # name = 'zidongduqu' # f_name = "C:\\Users\\Administrator\\Desktop\\spider_excel\\excel_originally\\_excel_数据" # xl_savefile = "C:\\Users\\Administrator\\Desktop\\spider_excel\\excel_new\\_excel_数据" + ".xlsx" # 新名 excel_add_name # excel.read_excel(filepath, name) # excel.add_name()