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 史泰龙