在工作中經常要用到python操作excel,比如筆者公司中一個人事MM在發工資單的時候,需要從幾百行的excel表中逐條的粘出信息,然后逐個的發送到員工的郵箱中。人事MM對此事不勝其煩,終於在某天請我吃了一碗燴面,於是我給她編寫了一個小工具,用python程序讀出excel的信息,然后自動發送到員工郵箱中。本着開源分享的原則,我把代碼貼出來供有需要的人使用,因為發郵件的部分讀取的是公司郵箱的通訊錄,所以對程序進行了閹割,只貼出讀取excle的部分。如果你用的是類似126或騰訊企業郵箱之類的公共郵局,那么網上已經有很多從中讀取通訊錄並自動發送郵件的代碼。
python讀取excle有很多第三方類庫可以使用,本人用的是xlrd 0.7.1版本,python版本為2.7.9。因為不再發送郵件,所以讀出的信息在控制台輸出,同時保存一份到文件中。
話不多說,上代碼:
1 # -*- coding: gbk -*- 2 import xlrd 3 import sys 4 from datetime import date,datetime,time 5 6 reload(sys) 7 sys.setdefaultencoding('gbk') 8 9 data = xlrd.open_workbook('test1.xls') 10 table = data.sheet_by_index(0) 11 file_object = open('log.txt','a+') 12 13 nrows = table.nrows 14 ncols = table.ncols 15 16 17 for row in range(2,nrows): 18 name=table.cell(row,1).value 19 print '尊敬的'+name+':\n 感謝您為公司做出的辛苦努力,以下是您9月份的工資信息,如有疑問請與人資聯系。' 20 file_object.write( '尊敬的'+name+':\n 感謝您為公司做出的辛苦努力,以下是您9月份的工資信息,如有疑問請與人資聯系。') 21 print '-------'+name+'--------' 22 file_object.write('\n-------'+name+'--------\n') 23 for col in range(ncols): 24 cell = table.cell(row,col).value 25 h1=table.cell(0,col).value 26 h2=table.cell(1,col).value 27 ctype=table.cell(row,col).ctype 28 if ctype==1: 29 print h1+h2+":"+cell 30 file_object.write(h1+h2+":"+cell+"\n") 31 elif ctype==3: 32 d=datetime(*xlrd.xldate_as_tuple(cell,0)) 33 print h1+h2+":"+d.strftime("%Y-%m-%d") 34 file_object.write(h1+h2+":"+d.strftime("%Y-%m-%d")+"\n") 35 else: 36 print h1+h2+":"+str(cell) 37 file_object.write(h1+h2+":"+str(cell)+"\n") 38 print '-------end--------' 39 file_object.write('-------end--------\n') 40 41 file_object.close()
文件中使用的excel文件格式如下:

部分運行結果截圖:
附件中包括此文件的程序代碼和使用的excel文件,以及xlrd安裝程序。
gongzi.rar