python簡單處理excel方法


 

python自帶xlrd和xlwt模塊用來處理excel,但總覺得xlwt模塊用着別扭,於是按自己的習慣重新封裝了一個

 

 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).value)
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     )

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM