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()
# 合并多表.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: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() cqwcns 发表于 2020-11-24 21:45
我的代码:
from openpyxl import load_workbook
不错😊。。。。
页:
[1]