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 史泰龙
  • 相关阅读:
    数据库被挂马3
    將目標網址轉換成HTML
    四步堵死3b3.org c.js注入
    GBK与UTF8编码选择与区分
    C#连Oracle数据库
    Session过期时间的四种设置方式
    怎么从内容页访问母板页
    Response.Charset与Response.ContentEncoding的区别
    CommandBehavior.CloseConnection的使用
    尽可能的使用强类型
  • 原文地址:https://www.cnblogs.com/jason-Gan/p/12034661.html
Copyright © 2011-2022 走看看