本文使用的是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') # 以省份名作為保存的文件名