cqwcns 发表于 2020-11-23 23:20

python的openpyxl使用append的问题

本帖最后由 cqwcns 于 2020-11-24 10:25 编辑

以下代码的作用是从a.xlsx-Sheet1复制表格内容到b.xlsx-sheet2。
如果要改为将a.xlsx-Sheet1的B列、E列、T列对应复制到b.xlsx-sheet2的A列、B列、C列。而且是append到A-C 列(即不覆盖现有数据)。
a.xlsx-Sheet1的B列、E列、T列剔除第一行,即表头不复制。
代码要怎么改?请指教,谢谢。。

from openpyxl import load_workbook, Workbook

formXlsx: Workbook = load_workbook(filename='a.xlsx', read_only=True)
formSheet = formXlsx['Sheet1']

toXlsx = load_workbook(filename='b.xlsx')
toSheet = toXlsx['sheet2']

for i, j in zip(formSheet['A2:E30'], toSheet['A2:E30']):
    for m, n in zip(i, j):
      n.value = m.value

toXlsx.save('b.xlsx')

formXlsx.close()
toXlsx.close()

zpy2 发表于 2020-11-24 13:13

# 合并多表.py
#zpy2@52pojie
import os
import glob
path1 = r"数据/*.xlsx"
files_result = glob.glob(path1)

#import sys
#sys.exit()


#将rows写入excel

def op_toexcel(data,filename): # openpyxl库储存数据到excel

    import openpyxl as op
    #wb = op.Workbook(filename) # 创建工作簿对象
    wb=op.load_workbook(filename)
    ws = wb['Sheet1'] # 创建子表
    for i in range(len(data)):
      d = data
      print(d)
      ws.append(d) # 每次写入一行
    wb.save(filename)

import openpyxl as op

lines=[]
for file in files_result:
    wb=op.load_workbook(file)
    sheet_name='Sheet1'
    ws=wb
    first_row=2
    last_row=30
    first_column=1
    last_column=8
    #enterprise_name=ws.cell(2,2).value
    for row in range(first_row,last_row):
      #第一列不为空
      if ws.cell(row,1).value is None:
            break
      line=[]
      #line.append(enterprise_name)
      for column in range(first_column,last_column):
            #b.xlsx-sheet2的A列、B列、C列
            #B列、E列、T列
            if column==2 or column==5 or column==17:
                line.append(ws.cell(row,column).value)
      lines.append(line)

#print(lines)
import shutil
source='合并.xlsx.bak'
target='合并.xlsx'
#b.xlsx
#shutil.copyfile(source,target)
op_toexcel(lines,target)
'''
因为 合并.xlsx有空行
合并后,从25行写入

'''
wb=op.load_workbook(target)
ws=wb['Sheet1']
range_date=ws.values
l=[ for row in range_date]
print(l)

通过一番搜索
学习写了一个

cqwcns 发表于 2020-11-24 21:45

本帖最后由 cqwcns 于 2020-11-24 21:46 编辑

zpy2 发表于 2020-11-24 13:13
合并多表.py
#zpy2@52pojie
import os

我的代码:
from openpyxl import load_workbook

# 只读加载源数据EXCEL表,并获得sheet行数
formXlsx = load_workbook(filename='a.xlsx', read_only=True)
formSheet = formXlsx['Sheet1']
formSheetMaxRow = formSheet.max_row

# 加载目标EXCEL表
toXlsx = load_workbook(filename='b.xlsx')
toSheet = toXlsx['sheet2']

# 把要复制的列创建为元组
tupFormColumnB = formSheet['B2':'B90000']
tupFormColumnD = formSheet['D2':'D90000']
tupFormColumnF = formSheet['F2':'F90000']
tupFormColumnH = formSheet['H2':'H90000']
tupFormColumnJ = formSheet['J2':'J90000']

# 根据源数据EXCEL表sheet行数循环,创建要添加的数据,并添加到目标EXCEL表
for i in range(0, formSheetMaxRow - 1):
    tupAddend = (tupFormColumnB.value, tupFormColumnD.value, tupFormColumnF.value,
               tupFormColumnH.value, tupFormColumnJ.value)
    toSheet.append(tupAddend)

# 保存目标EXCEL表
toXlsx.save('b.xlsx')

# 关闭两个EXCEL表
formXlsx.close()
toXlsx.close()

zpy2 发表于 2020-11-24 21:55

cqwcns 发表于 2020-11-24 21:45
我的代码:
from openpyxl import load_workbook



不错😊。。。。
页: [1]
查看完整版本: python的openpyxl使用append的问题