前提: python操作excel需要使用的模塊有xlrd、xlwt、xlutils。對excel進行讀、寫、更新操作。操作excel時需要先導入這些模塊,demo如下: excel-讀操作知識點: excel數據格式如下: excel - 寫操作知識點: excel寫入 新的excel後,數據格式 ...
前提:
python操作excel需要使用的模塊有xlrd、xlwt、xlutils。對excel進行讀、寫、更新操作。操作excel時需要先導入這些模塊,demo如下:
excel-讀操作知識點:
1 import xlrd 2 ''' 3 讀取 excel的操作步驟如下: 4 1. 打開excel,打開的excel必須存在 5 2. 獲取sheet對象 6 3. 對excel進行操作: 7 獲取excel的總行數、總列數、讀取excel每一行的數據、讀取excel每一列的數據、獲取某個單元格的值 8 ''' 9 #打開excel,打開的excel必須存在,返回book對象 10 book = xlrd.open_workbook('students.xlsx') 11 #通過索引獲取sheet對象 12 sheet = book.sheet_by_index(0) 13 #有多個sheet頁時可以通過sheet的名稱來獲取sheet對象 14 sheet1 = book.sheet_by_name('Sheet1') 15 16 #獲取excel的總行數, 17 rows = sheet.nrows 18 #獲取excel的總列數 19 cols = sheet.ncols 20 #獲取excel第2行的數據,返回結果為list:[2.0, 'b', 'women'] 21 row_value = sheet.row_values(2) 22 #獲取excel第1列的數據,返回結果為list:['name', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '小白', '小黑'] 23 col_values = sheet.col_values(1) 24 #獲取單元格第8行第1列的數據,返回結果為text: text:'小白' 25 cell_value = sheet.cell(8, 1) 26 #將text類型的結果轉換為str類型:小白 27 cell_str = sheet.cell(8, 1).value
註意:獲取每行、每列、某個單元格的值時,註意行、列的值要存在,否則會報錯:list index out of range
excel - 讀取excel小案例:
1 import xlrd 2 ''' 3 讀取excel的數據,讀取數據的列固定,迴圈讀取每行數據,讀取後的數據格式如下: 4 [ 5 {'name':xxx,'sex':xxx,'id':1}, 6 {'name':xxx,'sex':xxx,'id':1}, 7 ....... 8 ] 9 ''' 10 def readExcel(): 11 try: 12 #若輸入的excel不存在,則打開excel報錯 13 book = xlrd.open_workbook('students.xlsx') 14 except Exception as e: 15 print('error msg:', e) 16 else: 17 sheet = book.sheet_by_index(0) 18 #獲取excel的總行數 19 rows = sheet.nrows 20 stu_list = [] 21 #迴圈讀取每行數據,第0行是表頭信息,所以從第1行讀取數據 22 for row in range(1, rows): 23 stu = {} 24 #獲取第row行的第0列所有數據 25 id = sheet.cell(row, 0).value 26 name = sheet.cell(row, 1).value 27 sex = sheet.cell(row, 2).value 28 #將id、name、sex添加到字典,若元素不存在則新增,否則是更新操作 29 stu['id'] = id 30 stu['name'] = name 31 stu['sex'] = sex 32 stu_list.append(stu) 33 print(stu_list) 34 35 if __name__ == '__main__': 36 readExcel()
excel數據格式如下:
excel - 寫操作知識點:
1 import xlwt 2 ''' 3 寫 excel的操作步驟如下: 4 1. 打開excel,打開不存在的excel,若打開已存在的excel,進行寫操作,寫入的數據會覆蓋以前的數據 5 2. 獲取sheet對象並指定sheet的名稱 6 3. 對excel進行操作: 7 寫入excel、保存excel 8 ''' 9 #打開excel創建book對象 10 book = xlwt.Workbook() 11 #創建sheet指定sheet名稱 12 sheet = book.add_sheet('stu2') 13 #寫入excel數據,第n行第n列寫入某個值,寫入的數據類型為str 14 sheet.write(0, 0, '編號') 15 sheet.write(0, 1, '姓名') 16 sheet.write(0, 2, '年齡') 17 #保存excel,保存的尾碼必須是xls 18 book.save('studet.xls')
excel寫入 新的excel後,數據格式如下:
excel操作 已存在的excel,進行寫操作後的 excel格式如下:
---->
excel - 寫excel小案例:
1 import xlwt 2 ''' 3 將list數據: 4 [{'name': '小白', 'id': 1.0, 'sex': '男'}, 5 {'name': '小花', 'id': 2.0, 'sex': '女'}, 6 {'name': '小黑', 'id': 3.0, 'sex': '男'}, 7 {'name': '小茹', 'id': 4.0, 'sex': '女'}, 8 {'name': '小小', 'id': 5.0, 'sex': '男'}] 9 寫入excel,title信息為:編號、姓名、性別 10 ''' 11 def writeExcel(): 12 book = xlwt.Workbook() 13 sheet = book.add_sheet('stu') 14 titles = ['編號', '姓名', '性別'] 15 #迴圈讀取titles的長度,col的值為:0,1,2,並將title值寫入excel 16 for title_col in range(len(titles)): 17 #title 寫入excel的第0行的第col列,寫入titles[col]值 18 sheet.write(0, title_col, titles[title_col]) 19 students_list = [{'name': '小白', 'id': 1.0, 'sex': '男'},{'name': '小花', 'id': 2.0, 'sex': '女'},{'name': '小黑', 'id': 3.0, 'sex': '男'},{'name': '小茹', 'id': 4.0, 'sex': '女'},{'name': '小小', 'id': 5.0, 'sex': '男'}] 20 for stu_row in range(len(students_list)): 21 #迴圈讀取student_list的長度,從0開始,寫入excel時從第1行開始寫入數據 22 #寫入excel的數據是從list里進行取值,獲取list的每個元素,返回字典,然後通過字典的key獲取value 23 sheet.write(stu_row+1, 0, students_list[stu_row]['id']) 24 sheet.write(stu_row+1, 1, students_list[stu_row]['name']) 25 sheet.write(stu_row+1, 2, students_list[stu_row]['sex']) 26 book.save('student.xls') 27 if __name__ == '__main__': 28 writeExcel()
excel數據格式如下:
excel- 更新操作知識點:
1 import xlrd 2 from xlutils.copy import copy 3 ''' 4 更新excel操作: 5 1. 打開excel,更新的excel必須存在 6 2. 複製一個新的excel,使用xlutils模塊中的copy方法 7 3. 更新excel內的數據 8 4. 保存更新後的excel數據,以前的excel數據不會更改 9 ''' 10 from xlutils.copy import copy 11 #打開excel 12 book = xlrd.open_workbook('student.xlsx') 13 #複製一個新的excel 14 new_book = copy(book) 15 #查看某個對象下的所有方法 16 #print(dir(new_book)) 17 #獲取新excel的sheet對象 18 sheet = new_book.get_sheet(0) 19 #新增一列數據 20 sheet.write(0, 3, '更新') 21 #更新第4行第1列的值,將其修改為'郭靜',修改的數據類型為str 22 sheet.write(4, 1, '郭靜') 23 #保存更改後的excel,以前的excel數據不更改 24 new_book.save('student.xls')
以上為excel簡單操作~~~~