python excel 合并问题?
本帖最后由 任申猴 于 2022-7-11 14:06 编辑有三张excel表,每张表里面有一个工作表,三个excel共有三张工作表A,B,C。并且每个表格式内容都不一样(类似这种但长度宽度不一样)
想要把这三个excel的工作表合成一个新的excel,并且A工作表在sheet1B在sheet2C在sheet3中
用了openpyxl复制出来,要么格式不对。要么合成出来把前面复制过去的工作表覆盖了
求大哥帮帮忙
无代码无真相 思路:
先创建新 xlsx 格式文件
寻找若干其它 xlsx 的文件
然后将它们一一复制进新的 xlsx 文件 sheets 页面里
最后储存
代码:import os
import openpyxl
cwd = os.path.abspath('') # 路径
files = os.listdir(cwd) # 一堆各种格式的文件
n = 0 # 初始 0(用来创建新页面 sheets)
new_wb = openpyxl.Workbook() # 新 xlsx 格式文件
for file in files:
if file.endswith('.xlsx'): # 寻找 xlsx 格式文件
wb = openpyxl.load_workbook(file)# 打开文件
ws = wb.worksheets # 这里我把它当作全部 xlsx 文件只有一页 sheets
new_ws = new_wb.create_sheet(f"sheet {n}", n) # 新 xlsx 文件里的页面 sheet,因为我懒的取名,所以用号码 0、1、2 ... 替代
n += 1 # 页面增加
ROW = ws.max_row # 横向边界
COLUMN = ws.max_column # 竖向边界
for i in range(1, ROW + 1):
for j in range(1, COLUMN + 1):
CELL = ws.cell(row = i, column = j)# 原文件的内容
new_ws.cell(row = i, column = j).value = CELL.value # 复制去新文件里
new_wb.save("C.xlsx") # 储存 傻眼貓咪 发表于 2022-7-11 11:14
思路:
先创建新 xlsx 格式文件
寻找若干其它 xlsx 的文件
FileNotFoundError: No such file or directory: '封面.xlsx'
我明明输入的是绝对路径,不知道为什么会报这个错误 任申猴 发表于 2022-7-11 14:03
FileNotFoundError: No such file or directory: '封面.xlsx'
我明明输入的是绝对路径,不知 ...
可以试试测试路径是否正确:
import os
cwd = os.path.abspath('')
files = os.listdir(cwd)
print(files) 傻眼貓咪 发表于 2022-7-11 14:06
可以试试测试路径是否正确:
路径是正确的 任申猴 发表于 2022-7-11 14:08
路径是正确的
路径正确应该不会出现问题的,代码报错明显是指向路径不对,你的代码有吗?
绝对路径的斜杠对吗?有 '/' 和 '\' 两种 本帖最后由 傻眼貓咪 于 2022-7-11 14:18 编辑
任申猴 发表于 2022-7-11 14:08
路径是正确的
我知道了,你的路径写错了,斜杠写反了(不能和电脑一样)
正确应该是:"C:/Users/admin/Desktop/1" 傻眼貓咪 发表于 2022-7-11 14:17
我知道了,你的路径写错了,斜杠写反了(不能和电脑一样)
正确应该是:"C:/Users/admin/Desktop/1"
我都试过了 傻眼貓咪 发表于 2022-7-11 14:13
路径正确应该不会出现问题的,代码报错明显是指向路径不对,你的代码有吗?
绝对路径的斜杠对吗?有 '/' ...
import os
import openpyxl
cwd = os.path.abspath(r'C:/Users/admin/Desktop/1')# 路径
files = os.listdir(cwd)# 一堆各种格式的文件
n = 0# 初始 0(用来创建新页面 sheets)
new_wb = openpyxl.Workbook()# 新 xlsx 格式文件
for file in files:
if file.endswith('.xlsx'):# 寻找 xlsx 格式文件
wb = openpyxl.load_workbook(file)# 打开文件
ws = wb.worksheets# 这里我把它当作全部 xlsx 文件只有一页 sheets
new_ws = new_wb.create_sheet(f"sheet {n}", n)# 新 xlsx 文件里的页面 sheet,因为我懒的取名,所以用号码 0、1、2 ... 替代
n += 1# 页面增加
ROW = ws.max_row# 横向边界
COLUMN = ws.max_column# 竖向边界
for i in range(1, ROW + 1):
for j in range(1, COLUMN + 1):
CELL = ws.cell(row=i, column=j)# 原文件的内容
new_ws.cell(row=i, column=j).value = CELL.value# 复制去新文件里
new_wb.save("test.xlsx")# 储存
任申猴 发表于 2022-7-11 14:28
import os
import openpyxl
C:\Users\admin\PycharmProjects\flask_test\venv\Scripts\python.exe C:/Users/admin/PycharmProjects/flask_test/222.py
['封面.xlsx', '附页.xlsx', '首页.xlsx']
进程已结束,退出代码0 任申猴 发表于 2022-7-11 14:30
C:%users\admin\PycharmProjects\flask_test\venv\Scripts\python.exe C:/Users/admin/PycharmProjects/f ...
import os
import openpyxl
cwd = os.path.abspath('C:/Users/admin/Desktop/1') # 路径
files = os.listdir(cwd) # 一堆各种格式的文件
n = 0 # 初始 0(用来创建新页面 sheets)
new_wb = openpyxl.Workbook() # 新 xlsx 格式文件
for file in files:
if file.endswith('.xlsx'): # 寻找 xlsx 格式文件
wb = openpyxl.load_workbook(file)# 打开文件
ws = wb.worksheets # 这里我把它当作全部 xlsx 文件只有一页 sheets
new_ws = new_wb.create_sheet(f"sheet {n}", n) # 新 xlsx 文件里的页面 sheet,因为我懒的取名,所以用号码 0、1、2 ... 替代
n += 1 # 页面增加
ROW = ws.max_row # 横向边界
COLUMN = ws.max_column # 竖向边界
for i in range(1, ROW + 1):
for j in range(1, COLUMN + 1):
CELL = ws.cell(row = i, column = j)# 原文件的内容
new_ws.cell(row = i, column = j).value = CELL.value # 复制去新文件里
new_wb.save("C.xlsx") # 储存 傻眼貓咪 发表于 2022-7-11 14:32
不加r嘛,还是不行是。。。。这是不是我的环境有问题 任申猴 发表于 2022-7-11 14:36
不加r嘛,还是不行是。。。。这是不是我的环境有问题
好吧,那就加吧,可能我的电脑优化了{:10_257:} 任申猴 发表于 2022-7-11 14:36
不加r嘛,还是不行是。。。。这是不是我的环境有问题
傻眼貓咪 发表于 2022-7-11 14:38
好吧,那就加吧,可能我的电脑优化了
除了这种办法合成,还有其它办法嘛,人都整麻了 任申猴 发表于 2022-7-11 14:42
除了这种办法合成,还有其它办法嘛,人都整麻了
我能想到的就只有这种办法了,主要不是 Python 问题,而是 excel 格式问题,从逻辑上看,每个 Workbook 都有自己的 sheet,而且可以不止一个,假设存在某种函数可以直接将诺干个 Workbook 分别组合在不同的 sheet 里,那么当其中某个 Workbook 有多个 sheet 呢?唯一办法就是自己编写函数吧。 傻眼貓咪 发表于 2022-7-11 14:48
我能想到的就只有这种办法了,主要不是 Python 问题,而是 excel 格式问题,从逻辑上看,每个 Workbook...
感谢 任申猴 发表于 2022-7-11 14:51
感谢
{:10_277:} 本帖最后由 cflying 于 2022-7-11 22:23 编辑
只要选对库也就几行代码的事情,这种事情肯定最适合的库绝对是xlwings
import xlwings as xw
app=xw.App(visible=False,add_book=False)
file='3.xlsx'
exfile='test.xlsx'
wb1 = app.books.open(file)
wb2 = app.books.open(exfile)
ws1 = wb1.sheets
ws1.api.Copy(Before=wb2.sheets.api)
wb2.save()
wb1.close()
wb2.close()
app.kill()
页:
[1]
2