如何使用python excel粘贴到特定列

时间:2017-11-03 10:54:41

标签: python excel csv openpyxl

我想将数据从csv复制并粘贴到Excel中,以便以后可以过滤该表。我已经在VBA中完成了所有这些步骤,但我注意到VBA可能有问题,所以我想迁移到Python。

我已将csv转换为excel,并且已成功将已转换的xlsx文件复制到excel文档。

我的问题是,如何复制并粘贴到特定的起始列。由于我有其他数据,我需要在cell AN1.

复制

我试过以下..我能写一个特定的单元格,但我想发布数据...

   for row in ws1:
        for cell in row:
            ws2['K1'].value
            #ws2[cell.coordinate].value = cell.value
    wb2.save(path2)

...整体性

  ## csv to xlsx

from openpyxl import Workbook
import csv


wb = Workbook()
ws = wb.active
with open('C:/B.csv', 'r') as f:
    for row in csv.reader(f):
        ws.append(row)
wb.save('C:/B.xlsx')


###### COPY FROM B to existing E workbook


import openpyxl as xl


path1 = 'C:/B.xlsx'
path2 = 'C:/E.xlsx'

wb1 = xl.load_workbook(filename=path1)
ws1 = wb1.worksheets[0]

wb2 = xl.load_workbook(filename=path2)
ws2 = wb2.worksheets[0]
#ws2 = wb2.create_sheet(ws1.title)

#cell.value = ['A2']
for row in ws1:
    for cell in row:
        ws2.cell(row=1, column=1).value = cell.value
wb2.save(path2)

3 个答案:

答案 0 :(得分:2)

使用openpyxl在两个不同工作簿之间复制列可以按如下方式完成:

import openpyxl

wb1 = openpyxl.load_workbook('B.xlsx')
ws1 = wb1.active

wb2 = openpyxl.load_workbook('E.xlsx')
ws2 = wb2.active

for src, dst in zip(ws1['B:B'], ws2['AN:AN']):
    dst.value = src.value

wb2.save('E.xlsx') 

对于一系列列,以下内容可行:

import openpyxl

wb1 = openpyxl.load_workbook('B.xlsx')
ws1 = wb1.active

wb2 = openpyxl.load_workbook('E.xlsx')
ws2 = wb2.active

for src, dst in zip(ws1['A:I'], ws2['AN:AV']):
    for cell_src, cell_dst in zip(src, dst):
        cell_dst.value = cell_src.value

wb2.save('E.xlsx') 

答案 1 :(得分:1)

for row in range(1, ws1.max_row + 1):
    #for cell in row:
    ws1.column_dimensions.group('A', 'D', hidden=True)
    sheet.cell(row=i + 2, column=k + 1).value = val
wb2.save(path2)

应该这样做

答案 2 :(得分:-1)

不幸的是,提供的解决方案非常不可接受,因为它们不起作用。 VBA也不在议事日程中。我使用openpyxl,上面创建了一个错误。理想情况下,我想复制到一个新专栏,但这超出了我的技能。而是使用下面的内容并使用excel公式来获取所需的数据。我将不得不花费大约4个小时重新设计我的Excel,但我认为值得,因为我无法找到解决方法。

## csv to xlsx

from openpyxl import Workbook
import csv


wb = Workbook()
ws = wb.active
with open('C/B.csv', 'r') as f:
    for row in csv.reader(f):
        ws.append(row)
wb.save('C:/B.xlsx')


###### COPY FROM B to existing E workbook


import openpyxl as xl


path1 = 'C:/B.xlsx'
path2 = 'C:/E.xlsx'

wb1 = xl.load_workbook(filename=path1)
ws1 = wb1.worksheets[0]

wb2 = xl.load_workbook(filename=path2)
ws2 = wb2.worksheets[0]
#ws2 = wb2.create_sheet(ws1.title)

#cell.value = ['A2']
for row in ws1:
    for cell in row:
        ws2[cell.coordinate].value = cell.value
wb2.save(path2)