告別單調工作系列——利用python再次拯救漂亮妹子

25minutes發表於2021-09-09

圖片描述

python20180815.jpg

上一篇中「拯救」了漂亮妹子之後,原本以為事情告一段落,哪知道......

起因

記得幫妹子搞定自動提交表單之後的第三天,妹子端著奶茶樂呵呵的來找我,和我一番暢談理想,又指點江山之後,終於切入了正題。

大致的意思就是透過excel自動提交表單資料你幫我搞定了,你好厲害,現在整理excel的工作我也不是很想做,你有沒有辦法幫我搞定,搞定之後不會虧待你的,奶茶一定雙手奉上。

碰到這樣的事情其實我的內心是拒絕的,這明顯有點‘貪得無厭’,不知道什麼叫見好就收嗎?

可是,誰叫人家妹子長得漂亮呢,嘴巴又甜,被她這麼忽悠了幾下,習慣性的開始調研起需求來了,哎,這職業習慣得改改。

經過

聊了十幾分鍾之後,大致瞭解了需求,其實就是有幾個部門每天會發來固定的excel,她需要根據一定的要求整理彙總,有問題的資料聯絡對應的人去處理,沒有問題的資料再錄入到系統。

要了excel模板和具體的整理規則之後,漂亮妹子樂呵呵的走了,我有點後悔,又要犧牲自己的下班時間了,哎,好人難做啊。

理了下思路,其實解決這個需求不是很難。

首先先約定好規則,包括excel的命名,存放路徑,excel格式等。其中excel命名和格式已經是固定的,不用操太多心。

但存放路徑不定,基本上都是透過郵件來溝通的,原本想去遍歷郵件去獲取附件的,但考慮到無法判斷哪份excel是最終版,所以這一步就算了,讓業務自行判斷後放到統一的路徑下。

接下來就是遍歷指定路徑下的excel,根據業務給的資料規則進行整合,整合之後生成一個目標excel,一份是正確的資料,還一份是異常資料。

所用到的python模板基本上也是自帶的,加上操作Excel的xlrdxlwt

python操作excel

面對這樣的需求,正好也讓自己複習鞏固下python操作excel的幾個模板,記錄下來,供大家參考。

操作excel我主要用xlrdxlwtXlsxWriter這三個模組,基本可以解決我遇到的所有需求。

xlrd模組只支援讀取excel,不管是.xls的還是.xlsx的,可以看個簡單的demo:

import xlrd

rd = xlrd.open_workbook("test.xls") #讀取檔案sheets = rd.sheet_names()   #獲取所有sheet名table = rd.sheet_by_name("sheet1") #透過sheet名獲取名為 sheet1 的表#遍歷excel,列印出第一列for i in range(table.nrows):
    print(excelData.col_values(0)[i])

xlwtXlsxWriter模組,只支援寫excel操作,兩者各有優缺點,相對來說XlsxWriter不管從功能上還是效能上都略勝與xlwt,尤其是在支援大檔案寫入方面,如果資料量非常大,可以啟用constant memory模式,這是一種順序寫入模式,得到一行資料就立刻寫入一行,而不會把所有的資料都保持在記憶體中。

網上有一篇,大家可以看下,講的比較詳細,各模組的優缺點。

圖片描述

image

至於寫法,其實兩者差不多,直接看下官方文件即可,這裡以xlwt舉例:

import xlwt# 建立一個workbook 設定編碼workbook = xlwt.Workbook(encoding = 'utf-8')# 建立一個worksheetworksheet = workbook.add_sheet('Worksheet1')# 寫入excel# 引數對應 行, 列, 值worksheet.write(1,0, label = 'test')

style = xlwt.XFStyle() # 初始化樣式font = xlwt.Font() # 為樣式建立字型font.name = 'Times New Roman' font.bold = True # 黑體font.underline = True # 下劃線font.italic = True # 斜體字style.font = font # 設定樣式worksheet.write(2, 0, 'Unformatted value') # 不帶樣式的寫入worksheet.write(3, 0, 'Formatted value', style) # 帶樣式的寫入# 設定單元格寬度worksheet.col(0).width = 3333# 輸入日期style = xlwt.XFStyle()
style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0worksheet.write(4, 0, datetime.datetime.now(), style)#新增公式worksheet.write(5, 0, 5) # Outputs 5worksheet.write(5, 1, 2) # Outputs 2worksheet.write(6, 0, xlwt.Formula('A5*B5'))
worksheet.write(1, 1, xlwt.Formula('SUM(A5,B5)')) 

#新增超連結worksheet.write(7, 0, xlwt.Formula('HYPERLINK("";"Google")'))# 儲存workbook.save('test.xls')

後記

終於利用下班時間將這個需求搞定了,妹子很開心,但隱隱覺得沒有達到她想要的,也許過幾天,妹子又會樂呵呵的端著奶茶來找我了......



作者:Bug生活2048
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2812445/,如需轉載,請註明出處,否則將追究法律責任。

相關文章