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') # 以省份名作为保存的文件名

 

  

posted on 2019-12-13 13:43  一剑风徽  阅读(3355)  评论(0编辑  收藏  举报

导航