使用XL wings将100个不同Excel路径中的1列复制到1个Excel文件中


wb=xw.Book()
for i in ripPaths:   
wbtemp=xw.Book(i)
my_values=wbtemp.sheets['sheet1'].range('B5:B4722').options(ndim=2).value
wb.sheets['sheet1'].range("A1:A4722").value=my_values

我正试图使用for循环依次打开我磁盘上的100个excel文件,然后从每个文件中复制同一列,并将其粘贴到另一个excel文件中。问题是我一直在覆盖第A列。我需要第5行中的A1:A4722通过excel列名递增到B、C、D
我陷在泥里了!

目标是用我的100个excel文档,每个文档有1列,制作一个新的excel文件,包含100个excel列。谢谢你的提示。

当然,这是我的看法。这类事情的字母会很复杂,因为Excel可以从A-Z循环,然后从AA-AZ循环,等等:这里有一个方法:

wb=xw.Book()
for i in range(len(ripPaths)):   
wbtemp=xw.Book(ripPaths[i])
my_values=wbtemp.sheets['sheet1'].range('B5:B4722').options(ndim=2).value
if i < 26:
wb.sheets['sheet1'].range(f"{chr(65+i)}1:{chr(65+i)}4722").value=my_values
elif i < 52:
wb.sheets['sheet1'].range(f"A{chr(39+i)}1:A{chr(39+i)}4722").value=my_values
elif i < 78:
wb.sheets['sheet1'].range(f"B{chr(13+i)}1:B{chr(13+i)}4722").value=my_values
elif i < 104:
wb.sheets['sheet1'].range(f"C{chr(-13+i)}1:C{chr(-13+i)}4722").value=my_values

这使用f字符串,如果您愿意,您可以使用另一种形式的字符串格式。

wb=xw.Book()
for i in range(3):   
wbtemp=xw.Book(ripPaths[i])
my_values=wbtemp.sheets['sheet1'].range('B5:B4722').options(ndim=2).value
wb.sheets.active.range((1,i+1)).value=my_values

Aditya用f字符串给出的答案是病态的,但这更流畅。谢谢你的小费,费利克斯。

dst_wb = xw.Book()
sh = wb.sheets['sheet1']
for i, path in enumerate(ripPaths):   
scr_wb = xw.Book(path)
src_sh = scr_wb.sheets['sheet1']
values = src_sh['B5:B4722'].options(ndim=2).value
sh[0,i].value= values

最新更新