python复制excel_中文编程,python控制Excel实现跨文件复制Sheet.

本文介绍了如何使用Python的win32com模块实现跨文件复制Excel工作表,将多个Excel文件的Sheet合并到一个新的Excel文件中,并以原文件名为Sheet名称。通过简化处理,代码遍历指定文件夹中的所有Excel文件,复制每个文件的第一个Sheet到新文件,然后保存。对于原问题中的复杂情况,如多Sheet和重复Sheet名,文章并未详细处理,鼓励读者自行完善。
摘要由CSDN通过智能技术生成

2e715e6edcebcdda7ca15336d7cdd6c5.png

好久没有更新,今天看到有信息邀请泛舟回答这样睇问题:

python实现多个Excel表格合并为同一个表格的不同sheet,并且将sheet名字命名为原表名?

Ps:知乎竟然把相关问题关了,真无语。

这个就是一个跨文件复制Sheet 的问题,在泛舟能力理解之内,python 的包例如openpyxl是接近无解的.当然可以强行一个一个数据复制,但还有格式一样复制过去,十分麻烦.

相反,用win32com 接口,就方便很多,就是一句命令的问题.

泛舟刚刚好近来在能这个Excel方面的,于是写了以下代码.

泛舟把原问题做了简化处理,泛舟的代码是这样的:获取指定文件夹内的所有文件列表, 新建一个Excel文件,根据文件列表判断,如果是excel文件,则复制第一张Sheet,插入新建表,再改名为读取文件的文件名,然后一直循环到读取完所有表,然后保存新建表.

泛舟这里简化了原来问题,原来问题如果一个Excel 文档有多个表格的情况,没有处理,如果按原来的表名重命名,那么重复表名,也没有处理,这个留个各位读者自己想办法完善.

代码如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 14 12:02:42 2019
python 调用 win32com 处理 excel 文件

@author: 浩海泛舟
"""

import win32com.client as 包_win32工具
import os as 包_系统工具


def 方法_获取文件目录(文件路径):
    文件集 =  包_系统工具.listdir(文件路径)
    return 文件集

def 方法_跨文件复制表(文件路径,文件集):
    excel工具 = 包_win32工具.Dispatch('Excel.Application')
    excel工具.visible = 1 # 此行设置打开的Excel表格为可见状态;忽略则Excel表格默认不可见
    目标文件 = excel工具.Workbooks.Add() #新建立excel文件
    目标表_集合 = 目标文件.Worksheets
    for 文件名 in 文件集:
        文件名分解 = 文件名.split('.')
        print(文件名分解)
        if 文件名分解[-1] == 'xlsx' or 文件名分解[-1] == 'xls':
            文件 = excel工具.Workbooks.Open(文件路径 + ''+ 文件名)
            表_集合 = 文件.Worksheets
            表_集合(1).Copy(None,目标表_集合(1)) #跨表复制,插入第一个表之后,记得 Copy 首字母大写
            目标表_集合(2).Name = 文件名分解[0]  #由于新表总是在第二个表,所以第二个表改名就可了.
            文件.Close(SaveChanges=0)
        else:
            pass
    目标文件.SaveAs(文件路径 + r'处理后的文件.xlsx')
    目标文件.Close(SaveChanges=0)

def 方法_主程序(文件路径):
    文件集 = 方法_获取文件目录(文件路径)
    方法_跨文件复制表(文件路径,文件集)
    return

if __name__ == '__main__':
    文件路径 = r"你的文档路径"
    方法_主程序(文件路径)

【效果视频】

7cfb10659e1ec625441351896f23ef07.png
https://www.zhihu.com/video/1068218442103975936

感谢你的阅读,望勿喷.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值