python遍历一个文件夹下所有excel,读取所有sheet页,然后写入另一个文件夹下对应模板的excel中

news/2024/11/22 22:27:14/

本来想直接写入,但是我们的excel报表太麻烦了,里面表头有多处要求合并的,用python去写太要命了,想了下,设置一堆空的excel模板,这样只需要把原文件的数据读出来就可以了,简单多了

#读取文件夹下所有的excel,并遍历所有的sheet页,然后把读取的数据增加跳转列后保存到新的文件夹对应文件中,
# https://blog.csdn.net/qq_38140292/article/details/121134465
import pandas as pd
import os
from openpyxl import Workbook,load_workbook
from openpyxl.styles import *dfs=pd.DataFrame()
oldPath = r'E:\aaa\2020aaa\excelOLD'
newPath = r'E:\aaa\2020aaa\excelNEW'# 先遍历旧的文件夹,读取数据
for root_dir,sub_dir,files in os.walk(oldPath):
for fileName in files:
if fileName.endswith(".xlsx"):
#构造绝对路径
filePath = os.path.join(root_dir, fileName)
print('filePath:' + filePath)#读取sheet页
for sheetName in pd.read_excel(filePath,sheet_name=None).keys():
print('sheet_name:' + sheetName)
df = pd.read_excel(filePath,sheet_name=sheetName)# 获取所有的数据,返回的是一个list
value = df.values
# print(value)
cols = ['=HYPERLINK("https://www.cnpython.com/qa/76641", ">>>")' for i in range(df.index.values.size)]
df2 = pd.DataFrame({"跳转": cols})
result = pd.concat([df, df2], axis=1)
print(result)newFilePath = os.path.join(newPath, fileName)
book = load_workbook(newFilePath)
# sheet = book.get_sheet_by_name(sheetName) #会有红色错误提示,不影响使用
sheet = book[sheetName]
row_num = sheet.max_row
print('row_num:' + str(row_num))# address = "A3" # 数据插入的起始行和列,比如源数据插入是第四行,那就是"A4“,但是我们迁移去掉了表头,所以需要减1,设置为"A3"
address = 'A' + str(row_num)
start_row, start_col = sheet[address].row - 1, sheet[address].column - 1for i, row in enumerate(result.values, 2):
for j, v in enumerate(row, 1):
sheet.cell(start_row + i, start_col + j).value = v
# thin 细框线,thick粗线
sheet.cell(start_row + i, start_col + j).border = Border(left=Side(style='thin'), bottom=Side(style='thin'),
right=Side(style='thin'), top=Side(style='thin'))book.save(newFilePath)


http://www.ppmy.cn/news/597697.html

相关文章

怎么学习和提升后端开发能力? - 易智编译EaseEditing

学习和提升后端开发能力可以通过以下步骤进行: 学习编程语言: 选择一种常用的后端编程语言,如Python、Java、C#等,并深入学习该语言的语法、特性和最佳实践。掌握基本的编程概念和技巧是提升后端开发能力的基础。 学习数据库&am…

react-redux

1.不需要上下文文件,react-redux内部自己创建了上下文对象,并且我们可以把store放在上下文中,在组件中使用的时候,无需我们自己再获取上下文中的store了。 删掉上下文对象: 子组件中修改: 2.在组件中&…

第三章 门电路--数电(期末复习笔记)

第三章 门电路 重点:TTL电路与CMOS电路的结构与特点 3.1 概述 门电路是用以实现逻辑运算的电子电路,与已经讲过的逻辑运算相对应。常用的门电路在逻辑功能上有与门、或门、非门、与非门、或非门、与或非门、异或门等。正逻辑:高电平表示逻…

KBL406-ASEMI适配高端电源整流桥KBL406

编辑:ll KBL406-ASEMI适配高端电源整流桥KBL406 型号:KBL406 品牌:ASEMI 封装:KBL-4 特性:整流桥 正向电流:4A 反向耐压:600V 恢复时间:>2000ns 引脚数量:4 …

5V2A移动电源管理芯片脚位兼容IP5306

SM5308 是一款集成升压转换器、锂电池充电管理、电池电量指示的多功能电源管理 SOC,为移动电源提供完整的电源解决方案。 SM5308 的高集成度与丰富功能,使其在应用时仅需极少的外围器件,并有效减小整体方案的尺寸,降低 BOM 成本。SM5308 只需一个电感实现…

和Surface pro电源适配器说拜拜——Surface PD快充电源线方案讲述

如今随着这几年的USB-C PD适配器的普及,消费者手上的PD协议适配器越来越普遍,如何让微软surface 充电器线支持使用PD适配器快充呢?不妨加入一颗受电端PD协议取电芯片——LDR6015, ** 就可以打造一根 PD电源线适配pro7/6/5/4/laptop/book/go …

MB6S-ASEMI高档品质LED驱动器电源适配整流桥

编辑:ll MB6S-ASEMI高档品质LED驱动器电源适配整流桥 型号:MB6S 品牌:ASEMI 封装:MBS-4 电流:1A 电压:1000V 正向电压:1.10V 引脚数量:4 芯片个数:4 芯片尺寸&…

S5P4418: AXP-228电源管理芯片适配

1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 将电源管理芯片 AXP-228 适配到 S5P4418 Linux 3.4.y 系统。 3. 适配过程 电源管理芯片AXP-228是挂接在I2C总线上,电源管理…