吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1996|回复: 3
收起左侧

[求助] python的openpyxl使用append的问题

[复制链接]
cqwcns 发表于 2020-11-23 23:20
本帖最后由 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列剔除第一行,即表头不复制。
代码要怎么改?请指教,谢谢。。

[Python] 纯文本查看 复制代码
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
[Python] 纯文本查看 复制代码
# 合并多表.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[i]
        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[sheet_name]
    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=[[cell for cell in row] for row in range_date][1:]
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

我的代码:
[Python] 纯文本查看 复制代码
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[i][0].value, tupFormColumnD[i][0].value, tupFormColumnF[i][0].value,
                 tupFormColumnH[i][0].value, tupFormColumnJ[i][0].value)
    toSheet.append(tupAddend)

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

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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zpy2 + 1 + 1 我很赞同!

查看全部评分

zpy2 发表于 2020-11-24 21:55
cqwcns 发表于 2020-11-24 21:45
我的代码:
[mw_shl_code=python,true]from openpyxl import load_workbook

不错😊。。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 10:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表