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

python操作复制EXCEL表代码分享交流

初学python,以下代码实现从a.xlsx复制B、D、F、H、J列,到b.xlsx的A、B、C、D、E列。
功能已实现,现分享代码。
同时,请各位破友拍砖,有没有更高效率的写法?谢谢

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()

Wapj_Wolf 发表于 2020-11-24 22:34

python让啥都变简单了……

gujiejack2 发表于 2020-11-24 23:02

本帖最后由 gujiejack2 于 2020-11-24 23:07 编辑

import pandas as pd

file_path = 'a.xlsx'
data = pd.read_excel(file_path)
data = data.iloc[:, ]
data.to_excel('b.xlsx', index=False)

Elmer 发表于 2020-11-24 22:30

难得的沙发

gujiejack2 发表于 2020-11-24 22:53

为啥不用pandas?

ciker_li 发表于 2020-11-24 23:05

每个sheet不是只能有65535行吗?

cqwcns 发表于 2020-11-24 23:25

gujiejack2 发表于 2020-11-24 22:53
为啥不用pandas?

初学,未研究pandas

cqwcns 发表于 2020-11-24 23:26

ciker_li 发表于 2020-11-24 23:05
每个sheet不是只能有65535行吗?

谢谢提醒,可以优化。

cqwcns 发表于 2020-11-24 23:27

gujiejack2 发表于 2020-11-24 23:02
import pandas as pd

file_path = 'a.xlsx'


谢谢指教

tsecond 发表于 2020-11-25 00:08

python各种库大放异彩
页: [1] 2
查看完整版本: python操作复制EXCEL表代码分享交流