python自帶xlrd和xlwt模塊用來處理excel,但總以爲xlwt模塊用着彆扭,因而按本身的習慣從新封裝了一個python
1 # coding=utf-8 2 3 import xlrd # 讀模塊 4 import xlwt # 寫模塊 5 6 7 def read_excel(): 8 """ 9 讀取excel文件方法說明(此函數只是對xlrd用法的說明,看看就好。xlrd已經很好用了) 10 :return: 11 """ 12 # 打開excel文件 13 data = xlrd.open_workbook('123.xls') 14 15 # 獲取文件內的表名 16 print(data.sheet_names()) 17 18 # 獲取指定表的兩種方法 19 sh = data.sheet_by_index(0) # 索引法 20 sh = data.sheet_by_name(u'Sheet1') # 表名法 21 22 # 獲取表的行數 23 print(sh.nrows) 24 # 獲取表的列數 25 print(sh.ncols) 26 27 # 獲取第29行的數據(0算第一行) 28 print(sh.row_values(28)) 29 # 獲取第2列的數據(0算第一列) 30 print(sh.col_values(1)) 31 # 獲取第1行、第2列的數據(至關於座標) 32 print(sh.cell(0, 1)) 33 34 35 def write_excel(sheet_name, row0, datas, file_name): 36 """ 37 本身從新封裝的寫入excel表模塊。之後要將數據寫入excel直接調用此函數就行。此函數簡單幹淨,使用方便。 38 :param sheet_name: excel文件內的表名。例:Sheet1 39 :param row0: 表內第一行的內容,爲一個列表。例:[id, name, sex] 40 :param datas: 實際要寫入表內的數據,爲一個列表,裏面包含幾個元素就寫幾行數據,其中每個元素又爲一個列表,裏面對應這一行 41 每列的值。例:[[1, '小龍女', 'girl'], [2, '楊過', 'boy'], [3, '周伯通', 'boy']] 42 :param file_name: 最終生成的excel文件名。例:'test.xls' 43 :return: 44 """ 45 # 建立一個寫對象實例 46 f = xlwt.Workbook() 47 48 # 建立一個叫sheet_name的表名 49 sheet1 = f.add_sheet(sheet_name, cell_overwrite_ok=True) 50 51 # 建立表sheet_name的第一行(即標題) 52 for i in range(0, len(row0)): 53 sheet1.write(0, i, row0[i]) 54 55 # 從第二行開始寫數據,datas有多少元素就寫多少行 56 for row in range(1, len(datas) + 1): 57 # 遍歷每行的每一列,row0有多少元素就遍歷多少列 58 for col in range(len(row0)): 59 # 有了上面row,col提供的行號和列號就能夠精確匹配一個單元格了,下面就開始往單元格里寫數據了 60 # row:行號,col:列號,datas[row-1][col]:數據 61 # 注:datas這個列表裏一個元素爲一行,因爲是從第二行開始寫的,因此想要取datas的第一個元素需row-1 62 # 注:datas這個列表裏一個元素(列表)裏的元素對應這行每列的值。 63 # 例:[1, '小龍女', 'girl'],1對應第1列的值,'小龍女'對應第2列的值,'girl'對應第三列的值 64 sheet1.write(row, col, datas[row-1][col]) 65 66 f.save(file_name) 67 print('已生成excel文件!') 68 69 70 if __name__ == '__main__': 71 read_excel() 72 write_excel( 73 sheet_name='students', 74 row0=['id', 'name', 'sex'], 75 datas=[[1, '小龍女', 'girl'], [2, '楊過', 'boy'], [3, '周伯通', 'boy']], 76 file_name='test.xls' 77 )