Скопируйте 1 столбец из 100 различных путей Excel в 1 файл Excel, используя крылья XL - PullRequest
0 голосов
/ 22 января 2019
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

Я пытаюсь последовательно открыть 100 файлов Excel на моем диске с помощью цикла for, а затем скопировать один и тот же столбец из каждого и вставить его в другой файл Excel. Проблема в том, что я продолжаю перезаписывать ColumnA. Мне нужно A1: A4722 в строке 5, чтобы увеличить до B, C, D, через имена столбцов Excel.
Я застрял в грязи!

Цель состоит в том, чтобы взять мои 100 документов Excel с 1 столбцом каждый, чтобы создать новый файл Excel с 100 столбцами Excel. Спасибо за любые советы.

Ответы [ 2 ]

0 голосов
/ 25 января 2019
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

Ответ Адитьи со строками болен, но он более плавный.Спасибо за совет, Феликс.

0 голосов
/ 22 января 2019

Конечно, вот мое мнение.Буквы для этого типа вещей будут сложными, поскольку Excel может зацикливаться от AZ, а затем от 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-строки, вы можете использовать другую формуформатирование строки, если вы того пожелаете.

...