zoukankan      html  css  js  c++  java
  • python操作excel读取文件,处理后再保存成新的excel

    本文使用的是xlrd,xlwt模块, 直接使用pip install 安装即可; 具体模块代码,可以github上查阅: https://github.com/python-excel/xlrd

    详细的说明可参考官网: http://www.python-excel.org/

    因为上面两个看起来比较费时,为了便于快速上手使用,可参考<python中使用xlrd、xlwt操作excel表格详解> 这篇文章: https://www.jb51.net/article/60510.htm

    下面介绍下本文要完成的需求: 如下图,截取了少量数据,实际数据量会比较多,目前需要按照省份,切割成单独的excel文件保存起来, 手动操作比较耗时,考虑用代码实现;

    代码处理逻辑:

    1. 首先使用xlrd打开文件,把文件中的省份所在的列的值全部取出,使用集合去重,得到省份的集合,开始遍历省份;

    2. excel逐行进行判断,如果该行省份列的值 等于上述遍历值,则保存该行,最终同一省份下的数据就会被保存到同一个文件中;

    具体代码如下:

    import xlrd,xlwt
    workbook=xlrd.open_workbook('product_solds_info.xlsx',on_demand=True)#打开文件
    sheets=workbook.sheets()#返回可迭代的sheets对象
    sh = sheets[0] 
    
    def write_row(ws, sh, index, cursor):
        for i, v in enumerate(sh.row_values(index)):
            ws.write(cursor, i, v)
        cursor = cursor + 1
        return cursor
    
    c0 = sh.col_values(8) # 读取省份所在列的整列内容
    prov_set = set(c0[1:]) # 去掉第一行列名,并对省份去重
    
    for prov in prov_set:
        wb = xlwt.Workbook()
        ws = wb.add_sheet('Sheet')
        # 插入第一行的列名
        write_row(ws,sh,0,0)
        cursor = 1
        for rx in range(sh.nrows):
            if sh.row(rx)[8].value == prov:
                cursor = write_row(ws,sh,rx,cursor)
        wb.save(prov + '.xls') # 以省份名作为保存的文件名

      

    <人追求理想之时,便是坠入孤独之际.> By 史泰龙
  • 相关阅读:
    docker-linux下的部署和基本命令
    Docker——Docker安装Sentinel
    分布式事务
    Git仓库完整迁移
    JWT token过期自动续期解决方案
    ORACLE用户的创建与授只读权
    Arthas-Java的线上问题定位工具
    mysql读写分离
    redis集群搭建-3.0/4.0版本
    相信自己,只要你努力了,你的梦想就可以实现
  • 原文地址:https://www.cnblogs.com/jason-Gan/p/12034661.html
Copyright © 2011-2022 走看看