我试图合并所有的工作表在同一个Excel工作簿使用Xlwings如果有人可以请建议如何做到这一点?
下面的代码能够获取所有工作表并将它们合并到一个创建的输出文件中,但工作表选项卡保持分离而不是合并。
import xlwings as xw
import glob
import sys
folder = sys.argv[1]
inputFile = sys.argv[2]
outputFile = sys.argv[3]
path = r""+folder+""
excel_files = glob.glob(path + "*" + inputFile + "*")
with xw.App(visible=False) as app:
combined_wb = app.books.add()
for excel_file in excel_files:
print(excel_file)
wb = app.books.open(excel_file)
for sheet in wb.sheets:
sheet.copy(after=combined_wb.sheets[0])
wb.close()
combined_wb.sheets[0].delete()
combined_wb.save(outputFile)
combined_wb.close()
2条答案
按热度按时间63lcw9qa1#
更新**
更新了示例代码。
路径中每个工作簿的每个工作表中的数据都将粘贴到创建的合并工作簿中的默认工作表。每个工作簿的内容都由 'row_separation' 行分隔。
工作簿中的每个工作表都将从列“A”开始粘贴到合并工作表中,并以 'col_separation' 列分隔。
您需要确定将每个原始工作表粘贴到组合Excel文件中Sheet 1的位置。
注:此复制/粘贴还应包括数据样式,如字体名称、颜色、大小和格式。
来自3个工作簿示例工作表,工作簿1有2个工作表,工作簿2有3个工作表,工作簿3有1个工作表显示时,行分隔设置为10,列分隔设置为8
答案2 --------------------------------------------------------------
从相同的工作簿中选择相同的工作表,并作为单独的工作表添加到combined_wb中。
isr3a4wc2#
您可以在工作表上循环,并在
used_range
的范围对象上使用索引,例如used_range[-1:,:]
,以将工作表定位在输出工作簿或更确切地说是输出工作表中。数据示例
假设Excel工作簿有三个工作表。
工作表1:
| 一种|B| C语言|
| - -|- -|- -|
| 浮|取芯|瓦尔|
| 棒|格拉|插头|
| 巴兹|乌尔特|某某|
| 曲|层|星期四|
工作表2:
| U形|v型|w型|X射线|Y形|Z轴|
| - -|- -|- -|- -|- -|- -|
| 十二|九十二|八十六|二十二个||八十|
| 二十三个|二十九人||七十四||二十一个|
| 十六|10个|七十五|六十七|六十一|九十九|
工作表3:
| 一个|第二章|第三章|第四章|
| - -|- -|- -|- -|
| 一个|五个|九个|一个|
| 2个|六个|第0页|六个|
| 三个|七个||三个|
| 四个|八个|2个|第0页|
最终输出(即
wb_res
):| 一种|B| C语言||||
| - -|- -|- -|- -|- -|- -|
| 浮|取芯|瓦尔||||
| 棒|格拉|插头||||
| 巴兹|乌尔特|某某||||
| 曲|层|星期四||||
| U形|v型|w型|X射线|Y形|Z轴|
| 十二|九十二|八十六|二十二个||八十|
| 二十三个|二十九人||七十四||二十一个|
| 十六|10个|七十五|六十七|六十一|九十九|
| 一个|第二章|第三章|第四章|||
| 一个|五个|九个|一个|||
| 2个|六个|第0页|六个|||
| 三个|七个||三个|||
| 四个|八个|2个|第0页|||