JoseM 发表于 2020-9-23 15:16:01

把一个excel的一列数据复制到另外一个excel中

本帖最后由 JoseM 于 2020-9-23 15:17 编辑

如标题描述,要把一个excel中的一列数据copy到另外一个excel中,下面是我的代码, 但是这种方式要处理好多个几千行的excel文件,需要运行的时间很长,有什么更好的方式吗? 有没有直接以一列作为一个整体的复制,力求运行时间小。

import os
import openpyxl
from openpyxl import Workbook
from openpyxl import load_workbook
old_xlsx = load_workbook('C:\\Desktop\\111.xlsx')
new_xlsx = load_workbook('C:\\Desktop\\222.xlsx')
old_xlsx.sheet = old_xlsx['Sheet1']
new_xlsx.sheet = new_xlsx['Sheet1']
sheet = old_xlsx.active
A_Raw = []
a = sheet.max_row
b = sheet.max_column
i = 1
j = 1
while j < b:       
   while i < a :
       A_Raw.insert(i-1,old_xlsx_sheet.cell(i,j).value)
       new_xlsx.cell(i,j).value=A_Raw
       new_xlsx.save('C:\\Desktop\\222.xlsx')
       i = i+1
j = j+1

实际这个程序里面还有一些计算才复制,目前先探索如何加快处理速度

fall_bernana 发表于 2020-9-23 15:16:02

while j < b:      
   while i < a :
         A_Raw.insert(i-1,old_xlsx_sheet.cell(i,j).value)
         new_xlsx.cell(i,j).value=A_Raw
         new_xlsx.save('C:\\Desktop\\222.xlsx')
         i = i+1
不明白你这个为啥获取一个格子的数据你就生成一次new_xlsx? 你把new_xlsx.save('C:\\Desktop\\222.xlsx') 放到 整个while循环的外面试试

JoseM 发表于 2020-9-23 15:54:24

fall_bernana 发表于 2020-9-23 15:42
不明白你这个为啥获取一个格子的数据你就生成一次new_xlsx? 你把new_xlsx.save('C:\\Desktop\\222.xlsx') ...

Good Job!

rsj0315 发表于 2020-9-23 15:54:47

是不是pandas代码更简洁呢?
直接读取这一列,然后to_excel

JoseM 发表于 2020-9-23 16:26:04

rsj0315 发表于 2020-9-23 15:54
是不是pandas代码更简洁呢?
直接读取这一列,然后to_excel

不太会用pandas
页: [1]
查看完整版本: 把一个excel的一列数据复制到另外一个excel中