免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
從中秋節(jié)福利說起,如何應(yīng)用 Python

 現(xiàn)有的表格長(zhǎng)這樣: 



最后一欄的備注中的數(shù)字就是該員工應(yīng)得的福利的檔次。



這張表格說明了每個(gè)檔次的福利所包含的東西,1檔福利是500元標(biāo)準(zhǔn),2檔福利是300元標(biāo)準(zhǔn)……以此類推。最后單位領(lǐng)導(dǎo)想要的表格就是下面這樣的,這是我最后做出的成果的截圖,顯示了每個(gè)部門分別要買多少東西:  



那么我是如何做到的呢?聽媳婦描述完情況之后,我第一反應(yīng)就是可以用Python來做這件事。事實(shí)證明,Python并沒有讓我失望。在這個(gè)過程中,我用到了兩個(gè)Python的模塊,一個(gè)是用來讀Excel文件的xlrd,另一個(gè)是用來向Excel文件中寫入數(shù)據(jù)的xlsxwriter。

import xlrd
import xlsxwriter

首先獲取兩個(gè)Excel文件對(duì)象: 

workbook1 = xlrd.open_workbook(r'details.xlsx') #這是第一張表
workbook2 = xlrd.open_workbook(r'plan.xlsx') #這是第二張表

sheet3 = workbook1.sheet_by_name('Sheet3') #第一張表的sheet
sheet1 = workbook2.sheet_by_name('Sheet1') #第二張表的sheet

然后讀入第一個(gè)表中的部門和備注信息,每一條員工的所屬部門和備注組成一個(gè)元組。

cols_bumen = sheet3.col_values(2)
cols_beizhu = sheet3.col_values(7)

res = list(zip(cols_bumen, cols_beizhu))

res = res[2:len(res)] #前兩行是表頭,我們所需信息從第三行開始

讀入第二個(gè)表中的禮品信息。

lipin = [[],
        ['喜盛隆月餅','胡姬花花生油','黃河口大閘蟹','大米','后腿老臘肉','五花老臘肉','醬醋精裝組合'],
        ['怡青源月餅8*100g','大米','醬醋精裝組合','胡姬花花生油','后腿老臘肉','茶葉','五花老臘肉'],
        ['怡青源月餅8*100g','大米','獼猴桃','龍大花生油','面粉'],
        ['怡青源月餅8*100g','大米','后腿老臘肉']]

lipin_list = ['五花老臘肉', '龍大花生油', '醬醋精裝組合', '大米', '獼猴桃', '怡青源月餅8*100g',
             '喜盛隆月餅', '后腿老臘肉', '黃河口大閘蟹', '茶葉', '胡姬花花生油', '面粉']

創(chuàng)建一個(gè)字典huizong,key是部門名,值是一個(gè)列表,列表中包含該部門所需的全部商品,假設(shè)需要兩袋大米,那么列表中就會(huì)有兩個(gè)“大米”。最終字典的內(nèi)容應(yīng)該類似這樣:

{'高層管理':['大米', '大米', '喜盛隆月餅'], '文化產(chǎn)業(yè)部':['茶葉', '茶葉', '五花老臘肉', '五花老臘肉']}

要做到這一點(diǎn),我們需要遍歷res 

for i in res:
   bumen = i[0] #獲取部門名
   lipin_level = int(i[1]) #獲取該員工的福利檔次
   if huizong.get(bumen) == None: #如果字典中不存在這個(gè)鍵值對(duì),就創(chuàng)建一個(gè)
       huizong[bumen] = []
   huizong[bumen].extend(lipin[lipin_level]) #在列表中添加對(duì)應(yīng)的禮品名

最后遍歷這個(gè)字典,把每個(gè)部門中的不同的商品數(shù)量通過list的count方法計(jì)算出來,將數(shù)據(jù)寫到Excel表中,就大功告成了。


 完整代碼如下:

import xlrd
import xlwt
import xlsxwriter

workbook1 = xlrd.open_workbook(r'details.xlsx')
workbook2 = xlrd.open_workbook(r'plan.xlsx')

sheet3 = workbook1.sheet_by_name('Sheet3')
sheet1 = workbook2.sheet_by_name('Sheet1')

linpin = sheet1.col_values(1)
lipin = [[],
        ['喜盛隆月餅','胡姬花花生油','黃河口大閘蟹','大米','后腿老臘肉','五花老臘肉','醬醋精裝組合'],
        ['怡青源月餅8*100g','大米','醬醋精裝組合','胡姬花花生油','后腿老臘肉','茶葉','五花老臘肉'],
        ['怡青源月餅8*100g','大米','獼猴桃','龍大花生油','面粉'],
        ['怡青源月餅8*100g','大米','后腿老臘肉']]

lipin_list = ['五花老臘肉', '龍大花生油', '醬醋精裝組合', '大米', '獼猴桃', '怡青源月餅8*100g',
             '喜盛隆月餅', '后腿老臘肉', '黃河口大閘蟹', '茶葉', '胡姬花花生油', '面粉']

cols_bumen = sheet3.col_values(2)
cols_beizhu = sheet3.col_values(7)

res = list(zip(cols_bumen, cols_beizhu))

res = res[2:len(res)]

huizong = {'高層管理':[]}    

for i in res:
   bumen = i[0]
   lipin_level = int(i[1])
   if huizong.get(bumen) == None:
       huizong[bumen] = []
   huizong[bumen].extend(lipin[lipin_level])

result = xlsxwriter.Workbook('result.xlsx')
worksheet = result.add_worksheet()
for i in range(0, len(lipin_list)):
   worksheet.write(chr(66 + i) + '1', str(lipin_list[i]))

bumen = []
for i in res:
   if bumen.count(i[0]) == 0:
      bumen.append(i[0])

for i in range(0, len(bumen)):
   worksheet.write('A{0}'.format(2+i), str(bumen[i]))

alphaBet = 66
number = 2
j = 0
for key in huizong:
   count = 0
   for i in range(0, len(lipin_list)):
       count = huizong[key].count(lipin_list[i])
       worksheet.write('{0}{1}'.format(chr(alphaBet+i), number+j), count)
   j += 1

result.close()

(完)


看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多人

關(guān)注「Python那些事」,做全棧開發(fā)工程師

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python如何處理excel數(shù)據(jù)
使用VC++操作Excel文件 - 我不會(huì)飛 - 博客大巴
VC++下的Datagrid控件實(shí)現(xiàn)SQL數(shù)據(jù)導(dǎo)出到Excel
java應(yīng)用jcom將word轉(zhuǎn)pdf
Python自動(dòng)化辦公系列之Python操作Excel
自動(dòng)化辦公-excel篇 openpyxl的使用詳解_openpyxl新建workbook
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服