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

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM