python簡單處理excel方法

 

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     )
相關文章
相關標籤/搜索