import xlwings as xw
import pandas as pd
import openpyxl
import os
from openpyxl import load_workbook
from openpyxl.styles import Font, Border, Side
from openpyxl.styles import Alignment
from datetime import datetime
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from datetime import datetime
from openpyxl.utils import get_column_letter
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
def extract_tables_from_excel(file_path, sheet_name='Sheet1'):
df = pd.read_excel(file_path, sheet_name=sheet_name)
tables = []
temp_df = []
# 使用os.path.basename获取文件名作为数据来源的标识
source = os.path.basename(file_path)
# 分割逻辑:遇到空行就分割
for _, row in df.iterrows():
if row.isnull().all(): # 判断空行
if temp_df:
# 在将临时表添加到表格列表之前,为每行添加一个表示来源的列
temp_df_with_source = pd.DataFrame(temp_df)
temp_df_with_source['来源'] = source # 添加来源列
tables.append(temp_df_with_source)
temp_df = []
else:
temp_df.append(row)
if temp_df:
# 同样,为最后一个临时表的每行添加一个表示来源的列
temp_df_with_source = pd.DataFrame(temp_df)
temp_df_with_source['来源'] = source # 添加来源列
tables.append(temp_df_with_source)
return tables
def merge_tables(merging_tables, existing_tables):
merged_tables = []
for new_table, old_table in zip(merging_tables, existing_tables):
# 在合并时,保留来源列
merged_table = pd.concat([old_table, pd.DataFrame([[]]), new_table], ignore_index=True)
merged_tables.append(merged_table)
return merged_tables
def main(input_files, existing_files, output_dir):
all_existing_tables = [pd.read_excel(file) for file in existing_files]
for file in input_files:
merging_tables = extract_tables_from_excel(file)
all_existing_tables = merge_tables(merging_tables, all_existing_tables)
# 输出合并后的表格,并保留来源列
for idx, table in enumerate(all_existing_tables):
output_file_path = os.path.join(output_dir, f'merged_output_{idx + 1}.xlsx')
table.to_excel(output_file_path, index=False)
print(f'Saved merged table to {output_file_path}')
# 同一个sheet表中合并小表格
def table_merge2(file_path,sheet_name,output_file):
df = pd.read_excel(file_path, sheet_name=sheet_name, header=None)
# 初始化一个空的DataFrame列表来存储各个小表格
small_tables = []
current_table = []
header_found = False
# 遍历所有行
for index, row in df.iterrows():
if not row.isnull().all(): # 如果当前行不是全空
if not header_found: # 如果还没找到表头
header = df.iloc[2] # 获取表头
header_found = True
else: # 如果已经找到表头,则将当前行添加到当前小表格中
current_table.append(row.tolist())
else: # 如果当前行是全空,表示一个小表格结束
if current_table: # 如果当前小表格不为空
# 将当前小表格转换为DataFrame,并去掉可能存在的空行(例如最后两行)
small_df = pd.DataFrame(current_table[1:-2 if len(current_table) > 2 else None], columns=header)
small_tables.append(small_df)
current_table = [] # 重置当前小表格
# 处理最后一个小表格(如果有的话)
if current_table:
small_df = pd.DataFrame(current_table[1:-2 if len(current_table) > 2 else None], columns=header)
small_tables.append(small_df)
# 使用concat函数合并所有小表格
merged_df = pd.concat(small_tables, ignore_index=True)
# 添加序号(如果没有的话)
if '序号' not in merged_df.columns:
merged_df.insert(0, '序号', range(1, len(merged_df) + 1))
else:
merged_df['序号'] = range(1, len(merged_df) + 1)
merged_df.to_excel(output_file, index=False)
def table_merge1(file_path,sheet_name,output_file):
df = pd.read_excel(file_path, sheet_name=sheet_name, header=None)
# 初始化一个空的DataFrame列表来存储各个小表格
small_tables = []
current_table = []
header_found = False
# 遍历所有行
for index, row in df.iterrows():
if not row.isnull().all(): # 如果当前行不是全空
if not header_found: # 如果还没找到表头
header = df.iloc[2] # 获取表头
header_found = True
else: # 如果已经找到表头,则将当前行添加到当前小表格中
current_table.append(row.tolist())
else: # 如果当前行是全空,表示一个小表格结束
if current_table: # 如果当前小表格不为空
# 将当前小表格转换为DataFrame,并去掉可能存在的空行(例如最后两行)
small_df = pd.DataFrame(current_table[1:-1 if len(current_table) > 2 else None], columns=header)
small_tables.append(small_df)
current_table = [] # 重置当前小表格
# 处理最后一个小表格(如果有的话)
if current_table:
small_df = pd.DataFrame(current_table[1:-1 if len(current_table) > 2 else None], columns=header)
small_tables.append(small_df)
# 使用concat函数合并所有小表格
merged_df = pd.concat(small_tables, ignore_index=True)
# 添加序号(如果没有的话)
if '序号' not in merged_df.columns:
merged_df.insert(0, '序号', range(1, len(merged_df) + 1))
else:
merged_df['序号'] = range(1, len(merged_df) + 1)
merged_df.to_excel(output_file, index=False)
def table_merge(file_path,sheet_name,output_file):
df = pd.read_excel(file_path, sheet_name=sheet_name, header=None)
# 初始化一个空的DataFrame列表来存储各个小表格
small_tables = []
current_table = []
header_found = False
# 遍历所有行
for index, row in df.iterrows():
if not row.isnull().all(): # 如果当前行不是全空
if not header_found: # 如果还没找到表头
header = df.iloc[2] # 获取表头
header_found = True
else: # 如果已经找到表头,则将当前行添加到当前小表格中
current_table.append(row.tolist())
else: # 如果当前行是全空,表示一个小表格结束
if current_table: # 如果当前小表格不为空
# 将当前小表格转换为DataFrame,并去掉可能存在的空行(例如最后两行)
small_df = pd.DataFrame(current_table[1:], columns=header)
small_tables.append(small_df)
current_table = [] # 重置当前小表格
# 处理最后一个小表格(如果有的话)
if current_table:
small_df = pd.DataFrame(current_table[1:], columns=header)
small_tables.append(small_df)
# 使用concat函数合并所有小表格
merged_df = pd.concat(small_tables, ignore_index=True)
# 添加序号(如果没有的话)
if '序号' not in merged_df.columns:
merged_df.insert(0, '序号', range(1, len(merged_df) + 1))
else:
merged_df['序号'] = range(1, len(merged_df) + 1)
merged_df.to_excel(output_file, index=False)
def merge_excels(merged_input_files, merged_output_file):
# 创建一个空的DataFrame来存储所有数据
combined_df = pd.DataFrame()
# 遍历每个输入文件
for file in merged_input_files:
# 读取每个Excel文件
df = pd.read_excel(file)
# 将数据追加到combined_df
combined_df = pd.concat([combined_df, df], ignore_index=True)
# 将合并后的数据保存到新的Excel文件
combined_df.to_excel(merged_output_file, index=False)
print(f"合并完成!新文件保存在: {merged_output_file}")
# 去除日期字符串中的多余斜杠
def clean_date_string(date_str):
return date_str.rstrip('/')
# 检查并填充颜色的函数
def check_and_fill_dates(file_path, hang_low, hang_high, lie_low, lie_high):
# 加载Excel文件
workbook = openpyxl.load_workbook(file_path)
sheet = workbook.active
# 定义填充颜色
yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
for row in range(hang_low, hang_high): # 从第2行到第93行
prev_end_date = None
fill_row_yellow = False # 标记是否需要填充整行为黄色
for col in range(lie_low, lie_high): # M列到P列,对应Excel中的13到16列
cell = sheet.cell(row=row, column=col)
cell_value = cell.value
if isinstance(cell_value, str) and '-' in cell_value:
try:
start_date_str, end_date_str = cell_value.split('-')
start_date_str = clean_date_string(start_date_str.strip())
end_date_str = clean_date_string(end_date_str.strip())
start_date = datetime.strptime(start_date_str, '%Y/%m/%d')
end_date = datetime.strptime(end_date_str, '%Y/%m/%d')
if prev_end_date and start_date != prev_end_date:
# 时间段不连续,标记整行需要填充黄色
fill_row_yellow = True
prev_end_date = end_date
except ValueError:
# 日期格式不正确,标记整行需要填充黄色
fill_row_yellow = True
else:
# 不是日期单元格,标记整行需要填充黄色
fill_row_yellow = True
# 如果需要填充整行为黄色
if fill_row_yellow:
for col in range(1, sheet.max_column + 1):
sheet.cell(row=row, column=col).fill = yellow_fill
# 保存修改后的Excel文件
workbook.save(r'D:\first\merged_output_3_yellow.xlsx')
# 合并表格
def output_collect(file_paths, output_file_path):
# 创建一个新的Workbook作为输出
wb_out = Workbook() # 使用Workbook()来创建一个空的Workbook
ws_out = wb_out.active # 获取活动工作表,默认是第一个工作表
ws_out.title = 'MergedSheet' # 可以给工作表命名
# 用于记录已合并的行数,以便在后续文件中跳过标题行(如果需要)
merged_rows = 0
# 遍历每个Excel文件
for file_path in file_paths:
# 加载Excel工作簿
wb_in = load_workbook(file_path)
ws_in = wb_in.active
# 假设每个文件的Sheet表都有标题行,并且我们只想合并数据行
# (如果你想要合并标题行,可以调整下面的起始行)
start_row = 1 if merged_rows > 0 else 1
# 遍历工作表的行和列
for row in ws_in.iter_rows(min_row=start_row, max_row=ws_in.max_row, min_col=1, max_col=ws_in.max_column,
values_only=False):
for cell in row:
# 在新工作表中找到对应的单元格
new_cell = ws_out.cell(row=cell.row + merged_rows - (1 if start_row == 2 else 0), column=cell.column)
# 复制值
new_cell.value = cell.value
# 尝试复制格式(这里只复制字体和填充作为示例)
if cell.font is not None:
new_cell.font = cell.font.copy()
if cell.fill is not None:
new_cell.fill = cell.fill.copy()
# 注意:这里没有复制边框、对齐方式等其他格式
# 更新已合并的行数
merged_rows += ws_in.max_row - (1 if start_row == 2 else 0)
wb_out.save(output_file_path)
def select_data_no(input_folder1, input_folder2, output_folder):
# 读取两个Excel文件
merged_output_5 = pd.read_excel(input_folder1)
merged_output_3 = pd.read_excel(input_folder2)
# 将“merged_output_5”中“授信金额(万元)”列的数据除以10000,并重命名为“敞口金额”
merged_output_5['敞口金额'] = merged_output_5['授信金额(万元)'] / 10000
# 剔除“merged_output_5”中“客户名称”列含有“(个人)”的行
if '客户名称' in merged_output_5.columns:
merged_output_5 = merged_output_5[~merged_output_5['客户名称'].str.contains('(个人)')]
# 确保'国企业务分类'列是字符串类型
merged_output_3['国企业务分类'] = merged_output_3['国企业务分类'].astype(str)
# 剔除“merged_output_3”中“国企业务分类”列含有“市场化”、“化债”、“隐债”或“隐债置换”的行
if '国企业务分类' in merged_output_3.columns:
merged_output_3 = merged_output_3[~merged_output_3['国企业务分类'].str.contains('市场化|化债|隐债|隐债置换')]
# 定义要合并的列
columns_to_merge = ['客户名称', '授信品种', '当前进展', '敞口金额',
'已投放金额', '储备金额', '利率', '期限(年)', '周督促会-南岸支行.xlsx']
existing_columns_5 = [col for col in columns_to_merge if col in merged_output_5.columns]
# 从merged_output_5中选择实际存在的列
merged_output_5_selected = merged_output_5[existing_columns_5].copy()
existing_columns_3 = [col for col in columns_to_merge if col in merged_output_3.columns]
# 从merged_output_3中选择实际存在的列
merged_output_3_selected = merged_output_3[existing_columns_3].copy()
# 合并两个DataFrame
merged_df = pd.concat([merged_output_5_selected, merged_output_3_selected], ignore_index=True)
# 重命名列,将“基数汇总”表中的“敞口日均”改为“基数”,将“一季度敞口日均”表中的“敞口日均”改为“一季度敞口日均”
merged_df = merged_df.rename(columns={'周督促会-南岸支行.xlsx': '经营机构'})
# 保存合并后的DataFrame到一个新的Excel文件
output_path = os.path.join(output_folder, '非平台项目情况.xlsx')
merged_df.to_excel(output_path, index=False)
print(f"合并完成,并已保存到{output_path}")
def sort_data_no(input_folder):
# 读取合并后的Excel文件
merged_df = pd.read_excel(input_folder)
# 添加序号列
merged_df['序号'] = range(1, len(merged_df) + 1)
# 将'敞口金额'和'已投放金额'列转换为数值格式
merged_df['敞口金额'] = pd.to_numeric(merged_df['敞口金额'], errors='coerce')
merged_df['已投放金额'] = pd.to_numeric(merged_df['已投放金额'], errors='coerce')
# 确保'储备金额'列存在,如果不存在则计算并添加
if '储备金额' not in merged_df.columns:
# 计算'储备金额':如果'已投放金额'为空,则'储备金额'等于'敞口金额',否则等于'敞口金额'减去'已投放金额'
merged_df['储备金额'] = merged_df.apply(
lambda row: row['敞口金额'] if pd.isna(row['已投放金额']) else row['敞口金额'] - row['已投放金额'],
axis=1
)
# 填充'已投放金额'的空值为0
merged_df['已投放金额'] = merged_df['已投放金额'].fillna(0)
# 定义列的排序顺序
column_order = ['序号', '客户名称', '授信品种', '当前进展', '敞口金额', '已投放金额',
'储备金额', '利率', '期限(年)','经营机构']
# 按照指定的顺序重新排列列
merged_df = merged_df[column_order]
# 定义“当前进展”列的排序顺序
progress_order = [
'已投放', '部分投放', '已批待投', '总行上会', '总行审查',
'分行上会', '分行审查', '组卷调查', '营销阶段', '已销号'
]
# 将“当前进展”列转换为Categorical数据类型,并应用排序顺序
merged_df['当前进展'] = pd.Categorical(merged_df['当前进展'], categories=progress_order, ordered=True)
# 使用fillna方法将'储备金额'列中的空值替换为0
merged_df['储备金额'] = merged_df['储备金额'].fillna(0)
# 按照“当前进展”列和“储备金额”列进行排序
merged_df_sorted = merged_df.sort_values(by=['当前进展', '储备金额'], ascending=[True, False])
merged_df_sorted = merged_df_sorted.reset_index(drop=True)
# 保存排序后的DataFrame到一个新的Excel文件
merged_df_sorted.to_excel(input_folder, index=False)
print(f"排序完成,并已保存到{input_folder}")
def insert_title_and_save_no(excel_path, output_folder):
# 加载现有的Excel文件
wb = load_workbook(excel_path)
ws = wb.active
# 获取当天的日期
today_date = datetime.now().strftime('%Y-%m-%d')
filename = f"非平台项目情况{today_date}.xlsx"
# 插入一行作为标题行(如果需要)
ws.insert_rows(1)
# 合并单元格A1:K1,这里假设标题行是第一行
ws.merge_cells('A1:J1')
# 写入标题
title = f"重庆分行项目储备情况表-非平台项目情况(截至{today_date})"
ws['A1'] = title
# 设置标题字体格式(加粗)
title_font = Font(size=18, bold=True)
ws['A1'].font = title_font
# 居中对齐标题
title_alignment = Alignment(horizontal='center')
ws['A1'].alignment = title_alignment
# 遍历工作表中从第三行开始的所有行
for row in ws.iter_rows(min_row=3, max_row=ws.max_row):
for cell in row:
# 检查单元格值是否为 None
if cell.value is None:
continue
# 检查单元格是否在敞口金额、已投放金额或储备金额列中
if cell.column in [5, 6, 7]: # 根据实际列号进行调整
# 尝试将单元格内容转换为浮点数并保留两位小数
try:
cell.value = round(float(cell.value), 2)
except ValueError:
# 如果转换失败(例如,内容不是数字),则忽略该单元格
continue
# 检查单元格是否在利率列中
if cell.column == 8: # 根据实际列号进行调整
# 尝试将利率转换为百分比形式并保留两位小数
try:
cell.value = "{:.2f}%".format(cell.value * 100)
except ValueError:
# 如果转换失败,则忽略该单元格
continue
# 设置第二行的字体加粗和边框样式
for cell in ws['2:2']: # 这里'2:2'指的是第二行的所有单元格
cell.font = Font(bold=True)
cell.border = Border(left=Side(style='thin'), right=Side(style='thin'),
top=Side(style='thin'), bottom=Side(style='thin'))
# 保存修改后的Excel文件,使用新的文件名
output_path = os.path.join(output_folder, filename)
wb.save(output_path)
print(f"文件已保存为:{output_path}")
def select_data(input_folder, output_folder):
# 读取Excel文件
df = pd.read_excel(input_folder)
# 如果'经营机构'列存在,则先将其删除或重命名,以避免冲突
if '经营机构' in df.columns:
df = df.drop(columns=['经营机构'])
# 定义需要提取的“国企业务分类”列表
business_types = ['市场化', '化债', '隐债', '隐债置换']
# 确保'敞口金额'和'已投放金额'列是数值类型
df['敞口金额'] = pd.to_numeric(df['敞口金额'], errors='coerce')
df['已投放金额'] = pd.to_numeric(df['已投放金额'], errors='coerce')
# 计算'储备金额'列
df['储备金额'] = df.apply(
lambda row: row['敞口金额'] if pd.isna(row['已投放金额']) else row['敞口金额'] - row['已投放金额'],
axis=1
)
# 筛选出符合条件的数据列
filtered_df = df[df['国企业务分类'].isin(business_types)][[
'客户名称', '授信品种', '当前进展', '国企业务分类', '敞口金额', '已投放金额',
'利率', '期限(年)', '储备金额','周督促会-南岸支行.xlsx'
]]
filtered_df = filtered_df.rename(columns={'周督促会-南岸支行.xlsx': '经营机构'})
# 将筛选后的数据保存到新的Excel文件中
filtered_df.to_excel(output_folder, index=False)
print(f"数据提取完成,并已保存到{output_folder}")
def sort_data(input_folder):
# 读取合并后的Excel文件
merged_df = pd.read_excel(input_folder)
# 添加序号列
merged_df['序号'] = range(1, len(merged_df) + 1)
merged_df['敞口金额'] = pd.to_numeric(merged_df['敞口金额'], errors='coerce')
merged_df['已投放金额'] = pd.to_numeric(merged_df['已投放金额'], errors='coerce')
# 确保'储备金额'列存在,如果不存在则计算并添加
if '储备金额' not in merged_df.columns:
# 计算'储备金额':如果'已投放金额'为空,则'储备金额'等于'敞口金额',否则等于'敞口金额'减去'已投放金额'
merged_df['储备金额'] = merged_df.apply(
lambda row: row['敞口金额'] if pd.isna(row['已投放金额']) else row['敞口金额'] - row['已投放金额'],
axis=1
)
# 填充'已投放金额'的空值为0
merged_df['已投放金额'] = merged_df['已投放金额'].fillna(0)
# 定义列的排序顺序
column_order = ['序号', '客户名称', '授信品种', '当前进展', '国企业务分类', '敞口金额',
'已投放金额', '储备金额', '利率', '期限(年)', '经营机构']
# 按照指定的顺序重新排列列
merged_df = merged_df[column_order]
# 定义“当前进展”列的排序顺序
progress_order = [
'已投放', '部分投放', '已批待投', '总行上会', '总行审查',
'分行上会', '分行审查', '组卷调查', '营销阶段', '已销号'
]
# 将“当前进展”列转换为Categorical数据类型,并应用排序顺序
merged_df['当前进展'] = pd.Categorical(merged_df['当前进展'], categories=progress_order, ordered=True)
# 使用fillna方法将'储备金额'列中的空值替换为0
merged_df['储备金额'] = merged_df['储备金额'].fillna(0)
# 按照“当前进展”列和“储备金额”列进行排序
merged_df_sorted = merged_df.sort_values(by=['当前进展', '储备金额'], ascending=[True, False])
# 保存排序后的DataFrame到一个新的Excel文件
merged_df_sorted.to_excel(input_folder, index=False)
print(f"排序完成,并已保存到{input_folder}")
def insert_title_and_save(excel_path, output_folder):
# 加载现有的Excel文件
wb = load_workbook(excel_path)
ws = wb.active
# 获取当天的日期
today_date = datetime.now().strftime('%Y-%m-%d')
filename = f"平台业务{today_date}.xlsx"
# 插入一行作为标题行(如果需要)
ws.insert_rows(1)
# 合并单元格A1:K1,这里假设标题行是第一行
ws.merge_cells('A1:K1')
# 写入标题
title = f"重庆分行项目储备情况表-平台业务(截至{today_date})"
ws['A1'] = title
# 设置标题字体格式(加粗)
title_font = Font(size=18, bold=True)
ws['A1'].font = title_font
# 居中对齐标题
title_alignment = Alignment(horizontal='center')
ws['A1'].alignment = title_alignment
# 遍历工作表中从第三行开始的所有行
for row in ws.iter_rows(min_row=3, max_row=ws.max_row):
for cell in row:
# 检查单元格值是否为 None
if cell.value is None:
continue
# 检查单元格是否在敞口金额、已投放金额或储备金额列中
if cell.column in [6, 7, 8]: # 根据实际列号进行调整
# 尝试将单元格内容转换为浮点数并保留两位小数
try:
cell.value = round(float(cell.value), 2)
except ValueError:
# 如果转换失败(例如,内容不是数字),则忽略该单元格
continue
# 检查单元格是否在利率列中
if cell.column == 9: # 根据实际列号进行调整
# 尝试将利率转换为百分比形式并保留两位小数
try:
cell.value = "{:.2f}%".format(cell.value * 100)
except ValueError:
# 如果转换失败,则忽略该单元格
continue
# 设置第二行的字体加粗和边框样式
for cell in ws['2:2']: # 这里'2:2'指的是第二行的所有单元格
cell.font = Font(bold=True)
cell.border = Border(left=Side(style='thin'), right=Side(style='thin'),
top=Side(style='thin'), bottom=Side(style='thin'))
# 保存修改后的Excel文件,使用新的文件名
output_path = os.path.join(output_folder, filename)
wb.save(output_path)
print(f"文件已保存为:{output_path}")
if __name__ == "__main__":
input_files = [r"D:\周督促会-南岸支行.xlsx",
r"D:\周督促会-业务一部.xlsx",
r"D:\周督促会-渝北支行.xlsx",
r"D:\周督促会-九龙坡支行.xlsx",
r"D:\周督促会-高新支行.xlsx",
r"D:\周督促会-巴南支行.xlsx",
r"D:\周督促会-长寿支行.xlsx",
r"D:\周督促会-营业部.xlsx",
r"D:\周督促会-业务二部.xlsx",
r"D:\周督促会-业务四部.xlsx"]
existing_files = [r"D:\next\output_table_1.xlsx",
r"D:\next\output_table_2.xlsx",
r"D:\next\output_table_3.xlsx",
r"D:\next\output_table_4.xlsx",
r"D:\next\output_table_5.xlsx",
r"D:\next\output_table_6.xlsx",
r"D:\next\output_table_7.xlsx",
r"D:\next\output_table_8.xlsx",
r"D:\next\output_table_9.xlsx",
r"D:\next\output_table_10.xlsx",
r"D:\next\output_table_11.xlsx",
r"D:\next\output_table_12.xlsx",
r"D:\next\output_table_13.xlsx",
r"D:\next\output_table_14.xlsx",
r"D:\next\output_table_15.xlsx",
r"D:\next\output_table_16.xlsx",
r"D:\next\output_table_17.xlsx",
r"D:\next\output_table_18.xlsx",
r"D:\next\output_table_19.xlsx",
r"D:\next\output_table_20.xlsx",
r"D:\next\output_table_21.xlsx",
r"D:\next\output_table_22.xlsx",
r"D:\next\output_table_23.xlsx"]
output_dir = r'D:\first'
main(input_files, existing_files, output_dir)
table_merge2(r'D:\first\merged_output_3.xlsx', 'Sheet1',
r"D:\first\merged_output_3.xlsx")
table_merge2(r'D:\first\merged_output_5.xlsx', 'Sheet1',
r"D:\first\merged_output_5.xlsx")
table_merge2(r'D:\first\merged_output_7.xlsx', 'Sheet1',
r"D:\first\merged_output_7.xlsx")
table_merge1(r'D:\first\merged_output_9.xlsx', 'Sheet1',
r"D:\first\merged_output_9.xlsx")
table_merge1(r'D:\first\merged_output_11.xlsx', 'Sheet1',
r"D:\first\merged_output_11.xlsx")
table_merge(r'D:\first\merged_output_13.xlsx', 'Sheet1',
r"D:\first\merged_output_13.xlsx")
table_merge(r'D:\first\merged_output_15.xlsx', 'Sheet1',
r"D:\first\merged_output_15.xlsx")
table_merge(r'D:\first\merged_output_17.xlsx', 'Sheet1',
r"D:\first\merged_output_17.xlsx")
table_merge(r'D:\first\merged_output_19.xlsx', 'Sheet1',
r"D:\first\merged_output_19.xlsx")
table_merge(r'D:\first\merged_output_21.xlsx', 'Sheet1',
r"D:\first\merged_output_21.xlsx")
table_merge(r'D:\first\merged_output_23.xlsx', 'Sheet1',
r"D:\first\merged_output_23.xlsx")
check_and_fill_dates(r'D:\first\merged_output_3.xlsx', 2, 94, 14, 17) # high要加1
file_paths = [r'D:\first\merged_output_3_yellow.xlsx',
r'D:\first\merged_output_5.xlsx',
r'D:\first\merged_output_7.xlsx',
r'D:\first\merged_output_9.xlsx',
r'D:\first\merged_output_11.xlsx',
r'D:\first\merged_output_13.xlsx',
r'D:\first\merged_output_15.xlsx',
r'D:\first\merged_output_17.xlsx',
r'D:\first\merged_output_19.xlsx',
r'D:\first\merged_output_21.xlsx',
r'D:\first\merged_output_23.xlsx']
# 设定汇总后的Excel文件路径
output_folder = r'D:\大连银行\公司银行部\周督促会'
output_file_path = os.path.join(output_folder, 'combined_excel_with_format1.xlsx')
output_collect(file_paths, output_file_path)
input_folder1 = r"D:\first\merged_output_5.xlsx"
input_folder2 = r"D:\first\merged_output_3.xlsx"
output_folder = r"D:\over"
select_data_no(input_folder1, input_folder2, output_folder)
input_folder = r"D:\over\非平台项目情况.xlsx"
sort_data_no(input_folder)
sort_data_no(input_folder)
excel_path = r"D:\over\非平台项目情况.xlsx"
output_folder = r"D:\over"
insert_title_and_save_no(excel_path, output_folder)
input_folder = r"D:\first\merged_output_3.xlsx"
output_folder = r"D:\over\平台业务.xlsx"
select_data(input_folder, output_folder)
input_folder = r"D:\over\平台业务.xlsx"
sort_data(input_folder)
sort_data(input_folder)
excel_path = r"D:\over\平台业务.xlsx"
output_folder = r"D:\over"
insert_title_and_save(excel_path, output_folder)