精华内容
下载资源
问答
  • python自动拆分excel
    2022-05-04 18:20:12

    应用场景:某个文件夹中有多个Excel文件,现在需要将其合成一个Excel文件,一个工作簿中包含多个表单页

    openpyxl是经典的处理Excel文件的工具,面临上述需求时,首先想到的就是openpyxl库进行处理,但是,好像openpyxl只支持单个单元格级别的处理,不支持正页表单级别的拷贝,而且不支持较老的.xls文件格式,所以对于.xls类型的文件,需要利用pandas进行处理,当数据量较大时合并速度较慢,比单纯用pandas的方法慢一倍CSDN,在我的笔记本(CPU双核2.70GHz)上,对12个25列1000行的Excel文本文件进行合并时,本篇方法耗时约为12s,而pandas实现的方法CSDN耗时约为6s,话不多说,直接上代码:

    #coding: utf-8
    import os
    import pandas as pd
    from openpyxl import Workbook, load_workbook
    from openpyxl.utils.dataframe import dataframe_to_rows
    
    #将Excel中的sheet中的内容逐单元格拷贝到另一个sheet
    #@wso:output sheet, @wst:target sheet
    def copy_sheet(wso,wst):
        for i in range(1, wst.max_row+1):
            for j in range(1, wst.max_column+1):
                v=wst.cell(i,j).value#逐单元格赋值
                if v:
                    wso.cell(i,j,v)
    
    #将Excel中的sheet中的内容添加到另一个Excel的workbook
    #@wb:output workbook, @wst:target sheet
    def add_sheet(wb,wst):
        wso=wb.create_sheet(wst.title)#新建sheet页
        copy_sheet(wso,wst)
        
    #将Excel中各个sheet中的内容添加到另一个Excel的workbook
    #wbo:output workbook, wbt:target workbook
    def merge_workbook(wbo,wbt):
        for sh in wbt.sheetnames:#逐sheet页添加
            add_sheet(wbo,wbt[sh])
            
    #清除工作表中的空白sheet页
    def clear_workbook(wb):
        for sh in wb.sheetnames:#逐sheet页比对:只有1格单元格且单元格内容为空
            if wb[sh].dimensions==r'A1:A1' and wb[sh]['A1'].value==None:
                del wb[sh]
            
    #使用openpyxl库和pandas库将指定路径文件夹中的所有Excel(*.xlsx和*.xls)文件合并为一个文件
    #由于在openpyxl库中是逐单元格进行的数据赋值,所以速度较慢,数据量较大时尤为明显
    def merge_ExcelFiles(dirPath, outputFileName='合并结果.xlsx'):
        dirPath+='\\'
        wbo=Workbook()
        clear_workbook(wbo)#新建立的Excel文件一般都包含若干空的sheet,首先清除默认生成的空sheet
        os.chdir(dirPath)
        file_list=os.listdir(dirPath)
        for file in file_list:
            #如果是*.xlsx文件,则比较简单,直接利用openpyxl来处理
            if file.endswith('.xlsx'):
                wbt=load_workbook(dirPath+file)
                merge_workbook(wbo, wbt)
                print(file)
            #如果是*.xls文件,由于openpyxl不支持,则需要用pandas来对*.xls文件进行读取
            if file.endswith('.xls'):#参数sheet_name默认为0,此时函数返回的直接就是DataFrame类型,但是那样的话只能读取第一个sheet,设置为None可以读取所有的sheet,返回数据则是字典类型
                df=pd.read_excel(dirPath+file, sheet_name=None, dtype='object')#参数dtype默认是None,但为了保护数据(例如身份证号被科学计数法丢失后面几位数字),需要使用object类型
                for key, value in df.items():#但是依然使用openpyxl来保存,因为openpyxl对Excel的支持较好,例如如果sheet的名字相同,则会自动进行“sheet+1”避免重名
                    ws=wbo.create_sheet(key)
                    for r in dataframe_to_rows(pd.DataFrame(value), index=False, header=True):
                        ws.append(r)
                print(file)
        clear_workbook(wbo)
        print('OK!')
        wbo.save(dirPath+outputFileName)
    
        
    if __name__=="__main__":
        dirPath=r'D:\课程\学生基础信息'
        import time
        time0=time.time()
        merge_ExcelFiles(dirPath,'合并结果.xlsx')
        time1=time.time()
        print("Spending Time:{:.3f}s".format(time1-time0))
        

    更多相关内容
  • Python实现Excel拆分操作

    千次阅读 热门讨论 2021-07-24 19:55:56
    前言:对于Excel表格中数据量众多,若想要将Excel表按列分割成为各个独立的子表需要大量的时间,但若通过Python程序实现,将会节省大量的时间,提高工作效率,而这也是Python的魅力所在,本篇文章引用网上的一个案例...

    前言:对于Excel表格中数据量众多,若想要将Excel表按列分割成为各个独立的子表需要大量的时间,但若通过Python程序实现,将会节省大量的时间,提高工作效率,而这也是Python的魅力所在,本篇文章引用网上的一个案例为例子进行操作介绍,同时也欢迎大家一起交流,共同进步。


    通常在从事业务工作的同学们经常会遇到这样的一个问题,就是需要把一个汇总的excel表按列分成若干个新的Excel表,即:

    Python拆分Excel文件

     或者:

    7bd06ec6a7bc2a76cd9cd00d10b104e3.png

     需要针对不同供应商拆分成独立的子表格进行商品动销分析。

    下图为拆分后的结果,每个供应商会是一个单独的Excel文件产出:

    acd0045850b92fb0b2659438602ff408.png
    拆分后子表内容是单个独立供应商所有的商品动销数据:

    e21c92431b0c844d1670dc0434e5085a.png 

    (以上表格数据来源于网上 )

    Python代码的实现

    一、针对唯一sheet的Excel表拆分

    #步骤一:读取表格
    import pandas as pd
    dirPath = input('请输入源文件地址:')
    path = dirPath + 'xxx指标体系.xlsx'
    
    orgName = pd.read_excel(path)
    org_list = list(orgName['xx公司'].drop_duplicates())
    print(org_list)
    
    
    #步骤二:完成表格的拆分
    for i in org_list:
        writer = pd.ExcelWriter(dirPath+i+'指标体系.xlsx')
        tempdata = orgName[orgName['xx公司']==i]
        tempdata.to_excel(writer,index = False)
        writer.save()
        writer.close()

    二、针对多个sheet的Excel表拆分

    #步骤一:读取表格
    import pandas as pd
    dirPath = input('请输入源文件地址:')
    path = dirPath + 'xx指标体系.xlsx'
    
    orgName = pd.read_excel(path)
    org_list = list(orgName['xx公司'].drop_duplicates())  #去掉重复值
    print(org_list)
    
    
    #步骤二:获取excel_sheet名称并完成表格的拆分
    d_read = pd.read_excel(path,None) 
    names = list(d_read.keys())
    print(names)
    
    for i in org_list:
        writer = pd.ExcelWriter(dirPath+i+'xx指标体系周报%s.xlsx')
        for name in names:
            print(name)
            tempsheet = pd.read_excel(path,sheet_name=name)
            tempdata = tempsheet[tempsheet['xx公司']==i]
            tempdata.to_excel(writer, sheet_name = name,index = False)
        writer.save()
        writer.close()

    让我们一起,为梦想窒息。

    展开全文
  • 卡卡的霍格莫德小镇用python将某一列按照内容分成多个excel我们经常会在工作中遇见,类似下图中的表格,领导要求你将各个部门筛选出,并按照“财务部.xlsx”的格式单独成立一个excel,数据少了还好说,如果数据量大...

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

    作者:卡卡

    来源:卡卡的霍格莫德小镇

    用python将某一列按照内容分成多个excel

    我们经常会在工作中遇见,类似下图中的表格,领导要求你将各个部门筛选出,并按照“财务部.xlsx”的格式单独成立一个excel,数据少了还好说,如果数据量大了,大半夜叫你来拆分咋办呢?

    f19a7b99c0500f56df585a4b4557ff3c.png

    一、源代码:

    importpandas as pd

    df1= pd.read_excel(r'C:\Users\dell\Desktop\123.xlsx',sheet_name=0)

    DataList= list(df1.groupby(['部门']))for IN_DATA inDataList:

    IN_DATA[1].to_excel('C:/Users/dell/Desktop/' + str(IN_DATA[0])+ '.xlsx', sheet_name=IN_DATA[0], index=False)

    二、解释:

    这里主要用到了pandas库中的读取excel功能,其次按照部门进行排序,再依次建立新表。

    三、注意事项

    r'C:\Users\dell\Desktop\123.xlsx'是我的文件绝对路径,'C:/Users/dell/Desktop/'是最后生成结果的地方,两个路径的斜线不一样,是因为在渗透中说过了,win系统和linux系统的区别,只需要加一个r进行转换就好了。其次groupby(['部门']按照是按照你需要分开建表的那一列的标题。

    四、脚本使用方法

    同上一期,这里我用的是另一个笔记本,vscode和anaconda的python解释器,pycharm也可以使用的。

    9ea278bf4b5208ce09edcbeb9a4fad85.png

    展开全文
  • 今天我们来分享一个真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍!需求需要向大约 500 名用户发送...

    今天我们来分享一个真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍!

    需求

    需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户

    需求解析

    6000dba69aec64ab40c0b807f5693324.png

    大致的流程就是上图,先拆分 Excel 数据,提取出对应的邮件地址和用户的数据信息,再自动添加到邮件的附件当中

    代码实现

    首先我们先来看下我们手中 Excel 的数据形式是怎么样的

    import datetime
    import os
    import shutil
    from pathlib import Path
    import pandas as pd
    
    
    src_file = Path.cwd() / 'data' / 'Example4.xlsx'
    df = pd.read_excel(src_file)
    df.head()

    15e0e428b247c02603331f2934b338dc.png

    可以看出,CUSTOMER_ID 就是那个唯一的用户 ID,下面我们以该字段来分组,得到如下数据

    customer_group = df.groupby('CUSTOMER_ID')
    for ID, group_df in customer_group:
        print(ID)
    >>>Output>>>
    A1000
    A1001
    A1002
    A1005
    ...

    我们再来看下用户 A1005 所对应的数据形式

    7ad184dd4b1e686564544a59ba081611.png

    接下来我们就为每一个用户创建一个 Excel,后面就可以作为附件使用

    attachment_path = Path.cwd() / 'data' / 'attachments'
    today_string = datetime.datetime.today().strftime('%m%d%Y_%I%p')
    attachments = []
    for ID, group_df in customer_group:
        attachment = attachment_path / f'{ID}_{today_string}.xlsx'
        group_df.to_excel(attachment, index=False)
        attachments.append((ID, str(attachment)))

    我们来看下变量 attachments 所包含的数据吧

    [('A1000',
    'c:\\Users\\luobo\\notebooks\\2020-10\\data\\attachments\\A1000_01162021_12PM.xlsx'),
    ('A1001',
    'c:\\Users\\luobo\\notebooks\\2020-10\\data\\attachments\\A1001_01162021_12PM.xlsx'),
    ('A1002',
    'c:\\Users\\luobo\\notebooks\\2020-10\\data\\attachments\\A1002_01162021_12PM.xlsx'),
    ('A1005',
    'c:\\Users\\luobo\\notebooks\\2020-10\\data\\attachments\\A1005_01162021_12PM.xlsx')]

    最后我们可以通过将 DataFrame 合并在一起来生成带有电子邮件地址的文件列表

    email_merge = pd.merge(df, df2, how='left')
    combined = email_merge[['CUSTOMER_ID', 'EMAIL', 'FILE']].drop_duplicates()

    得到的 DataFrame 如下

    6f96c534880d9abef973242fc07842a4.png

    我们已经收集了客户名单、他们的电子邮件和附件,现在我们就可以用 Outlook 发送一封电子邮件了

    import win32com.client as win32
    
    today_string2 = datetime.datetime.today().strftime('%b %d, %Y')
    
    class EmailsSender:
        def __init__(self):
            self.outlook = win32.Dispatch('outlook.application')
    
        def send_email(self, to_email_address, attachment_path):
            mail = self.outlook.CreateItem(0)
            mail.To = to_email_address
            mail.Subject = today_string2 + ' Report'
            mail.Body = """Please find today's report attached."""
            mail.Attachments.Add(Source=attachment_path)
            # Use this to show the email
            #mail.Display(True)
            # Uncomment to send
            #mail.Send()

    通过上面这个简单的类,我们可以生成电子邮件并附加 Excel 文件

    同时我们还注意到,这里使用了 win32,关于这个库的具体使用,我们在下次的文章中再具体说明吧

    email_sender = EmailsSender()
    for index, row in combined.iterrows():
        email_sender.send_email(row['EMAIL'], row['FILE'])

    54ef0e189d4c27029057f3d21e394f56.png

    最后,我们再把所有生成的 Excel 存档,以备后面审查、比对等

    archive_dir = Path.cwd() / 'archive'
    
    for f in attachments:
        shutil.move(f[1], archive_dir)

    至此,我们的编码结束,整体来看还是比较简单的

    喜欢就在看点赞转发,三连支持一下噻!

    END

    
     

    各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)

    推荐阅读

    牛逼!Python常用数据类型的基本操作(长文系列第①篇)

    牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

    牛逼!Python函数和文件操作(长文系列第③篇)

    牛逼!Python错误、异常和模块(长文系列第④篇)

    展开全文
  • 话说Excel数据表,分久必合、合久必分。Excel数据表的“分”与“合”是日常办公中常见的操作。...利用Python的Pandas库,便可以自动实现Excel数据表的“分分合合”。下面结合实例来分享本人整理的实用代码片段。
  • 1.利用python将只有一个sheet的excel拆分为多个sheet的excel 2.将excel拆分成多个工作薄,依然使用上面的数据表格 3.合并多个excel 一、使用步骤 1.利用python将只有一个sheet的excel拆分为多个sheet的excel ...
  • 作者 |周萝卜来源 | 萝卜大杂烩今天我们来分享一个真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍...
  • Python办公自动化应用案例】-Python实现excel的合并拆分.zip
  • 对于这样的需求,最基础的方法,就是根据Excel中的筛选功能,人工筛选指定数据后创建工作簿,或是有VBA基础的小伙伴会考虑用VBA自动化实现。但是,无论以上的哪种方法,在大量的数据背景下,均不适用。人工处理效率...
  • 一、前言在日常生活或者工作中的时候,我们偶尔会遇到这样一种让人头大的情况——当单个Excel文件较大或需要根据某一列的内容需要拆分为多个CSV文件时,用Excel的筛选功能去慢慢筛选虽然可...
  • 我尝试只拆分Excel文件中的合并单元格(包含多个工作表),如下所示:请注意有部分/全部空行。这些行不会合并。在使用openpyxl,我在每个工作表中找到了合并的单元格区域,代码如下:wb2 = load_workbook('Example....
  • 业务的需求公司的运营部门需要统计自本年度1月1日—9月30日所有相关供应商的商品动销数据。...下图为拆分后的结果,每个供应商会是一个单独的Excel文件产出: 拆分后子表内容是单个独立供应商所有的商品动销数据: P...
  • 该项目使用python开发,可以实现word、excel、pdf三种文档的拆分与合并工作,大大简化了手工操作的工作量。软件特色是自动化、效率高,对文档格式保护好,能按原格式进行输出。源码含详细注释,可自行修改。一定要...
  • 一、前言在日常生活或者工作中的时候,我们偶尔会遇到这样一种让人头大的情况——当单个Excel文件较大或需要根据某一列的内容需要拆分为多个CSV文件时,用Excel的筛选功能去慢慢筛选虽然可...
  • /usr/bin/env python# -*- coding:utf-8 -*-import xlrdfrom pyexcelerate import Workbookimport os"""excel 文件拆分1、指定源文件路径2、指定拆分行数大小3、输出累计金额和每个文件累计金额"""# 读取源excel所有...
  • 今天我们来分享一个真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! ●个人主页:Damon7575 ●欢迎点赞关注收藏 ●既选择了远方,便...
  • 使用Python进行Excel文件拆分

    千次阅读 2020-06-19 14:50:44
    使用python进行Excel表格拆分,保存为多个文件-运营必会小技能 公司内做数据支持岗位的伙伴(表哥、表姐、表叔、表妹),可能会经常遇到这样的需求,就是把一个Excel数据文件,按照某一列数据分类并拆分成不同的表...
  • Python操作Word、Excel、PPT、PDF\、复杂文件、通信软件(微信、邮件、飞书、钉钉)、图片 目录   章节一:python使用openpyxl操作excel     1、openpyxl库介绍     2、python怎么打开及读取表格内容? ...
  • Python合并拆分excel

    2020-11-25 04:44:32
    Python 实现合并defmerge_excel(dir):print('--- 执行合并 ---')filename_excel= [] #存表名frames = [] #存表内容d = dir.replace('/','\\\\') #因pandsa读取路径为双斜杠,需转换if d.endswith('\\\\') == False: ...
  • 1 遍历文件夹中的文件,如果excel文件中存在多个sheet,则将这些sheet表拆分处理,分别保存为独立的文件,并存入文件夹中,文件夹名同excel文件名; 2 在文件处理过程中,原表中的格式不能改变。 二、分析及思路 1、...
  • Python数据分析】利用Python实现EXCEL一个表格按条件拆分为多个表格。想获取代码文件,请微信关注微信公众号“闲谈项目管理”,对话框回复“数据分析案例1”即可获得文件下载链接。
  • python自动化小技巧,拆表的简单方式之一
  • 工作中经常会出现需要将数据按一定的条件拆分并分发给不同的收件人的情况,今天就来给大家分享一下如何使用python拆分Excel表格并分发邮件。以下表(2019年下半年销量数据表)数据为例:首先我们需要一张包含收件人...
  • python自动办公-41 excel处理实例(单工作表拆分到多工作表).zip源码python项目实例源码打包下载python自动办公-41 excel处理实例(单工作表拆分到多工作表).zip源码python项目实例源码打包下载python自动办公-41 ...
  • 超简单的方法完整保留原有所有样式拆分Excel

    万次阅读 多人点赞 2021-06-21 20:11:02
    作者:小小明,高级数据处理专家,解决各类数据处理难题。 需求描述 有一个Excel表格: 我们希望将其按照指定的字段拆分为多个表格。...如何使用Python实现这个自动化操作呢?那就是通过pywin32调用VBA.
  • refreshall刷新excel的所有数据来源,我的数据来源是pq搭建的链接数据库的模型,也可以搭载爬虫的数据,这样就可以完成自动刷新数据并发送微信的操作,解放双手更多的时间来学习 36 def wkb_operate(class_picture,...
  • python自动办公-43 excel处理实例(单工作簿拆分到多工作簿中(多表中).zip源码python项目实例源码打包下载python自动办公-43 excel处理实例(单工作簿拆分到多工作簿中(多表中).zip源码python项目实例源码打包...
  • Python、VBA轻松自动化 作者 | Ryoko来源 | 凹凸数据当你收集了 n 个人的 EXCEL 记录表,需要将它们汇成一个总表时你会怎么做呢?如果不通过技术手段,要一个个打开再复制粘贴也太麻烦了吧!此时就需要一个通过几...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,665
精华内容 1,466
热门标签
关键字:

python自动拆分excel