python如何通過openpyxl讀寫Excel文件
一、模塊安裝
openpyxl模塊可實現(xiàn)對excel文件的讀、寫和修改,使用之前需要先安裝該模塊。
# openpyxl生成的xlsx格式支持wps和office,xls格式只支持wps,使用office打開會報錯 pip install openpyxl
二、 使用方法
Excel演示內(nèi)容,整個Excel文件稱為工作簿,工作簿中的每個頁稱為工作表,工作表又由單元格組成。
1、新建Excel并寫入數(shù)據(jù)
import openpyxl # 創(chuàng)建一個新的工作簿對象 wb = openpyxl.Workbook() # 獲取工作表對象(sheet) ws = wb.active print(ws) # 設(shè)置Sheet名稱 ws.title = '學生表' # 創(chuàng)建一個新sheet,可以指定名稱,index表示新創(chuàng)建的工作簿放在第幾個位置, index從0開始計數(shù) ws_1 = wb.create_sheet(index=1, title='成績表') ws_2 = wb.create_sheet(index=2, title='科目表') # 獲取所有工作表名稱 print(wb.sheetnames) # 方法一:寫入單個單元格 ws['A1'] = '姓名' ws['B1'] = '班級' ws['c1'] = '年齡' # 方法二:寫入單個單元格(行,列,內(nèi)容); 也可以直接ws.cell(1, 4, '學校') ws.cell(row=1, column=4, value='學校') # 寫入多個單元格(追加模式,不會覆蓋之前的,從有數(shù)據(jù)的下一行開始) ws.append(['王明', '三年級一班', '9歲']) # 第一列和第三列插入數(shù)據(jù),第二列插入[None]值 ws.append(['王五', None, '10歲']) # 追加第二行數(shù)據(jù),過濾空值 # 獲取工作表總行數(shù) max_row = ws.max_row col_values = [] # 遍歷第二列所有行 for row in range(1, max_row+1): # 獲取當前單元格的值 cell_value = ws.cell(row=row, column=2).value # 如果當前單元格的值不為空 if cell_value is not None: # 將當前單元格的值添加到列表中 col_values.append(cell_value) print("第二列有 %d 行數(shù)據(jù)" % len(col_values)) ws.cell(len(col_values)+1, 2, "三年級二班") # 將新數(shù)據(jù)追加到最后一行,忽略第二列 data = [['張三', '10歲'], ['李四', '15歲']] for row in data: # 在第二列插入 None 值,實現(xiàn)跳過該列 row.insert(1, None) ws.append(row) # 保存 wb.save('1.xlsx')
2、讀取Excel數(shù)據(jù)
import openpyxl # 獲取工作簿對象 wb = openpyxl.load_workbook('1.xlsx') # 獲取所有工作表名稱 print(wb.sheetnames) # 獲取工作表對象,三種方法 sheet1 = wb['學生表'] sheet2 = wb.worksheets[1] sheet3 = wb[wb.sheetnames[2]] print(sheet1, sheet2, sheet3) # 獲取工作表名稱 title = sheet1.title print(title) # 獲取工作表總行數(shù) rows = sheet1.max_row # 獲取工作表總列數(shù) cols = sheet1.max_column # 總行,總列 print(rows, cols) # 獲取某一單元格內(nèi)容(行, 列),例:2行1列,列表從1開始;也可以直接sheet1.cell(2, 1).value cell = sheet1.cell(row=2, column=1).value print(cell) # 讀取第一行的所有內(nèi)容 row_list = [] for i in range(1, cols+1): cell_value = sheet1.cell(row=1, column=i).value row_list.append(cell_value) print(row_list) # 讀取第一列的所有內(nèi)容 column_list = [] for i in range(1, rows+1): cell_value = sheet1.cell(row=i, column=1).value column_list.append(cell_value) print(column_list) # 讀取第二列的所有內(nèi)容,不包含空值 col_values = [] # 遍歷第二列所有行 for i in range(1, rows+1): # 獲取當前單元格的值 cell_value = sheet1.cell(row=i, column=2).value # 如果當前單元格的值不為空 if cell_value is not None: # 將當前單元格的值添加到列表中 col_values.append(cell_value) print(col_values, len(col_values))
結(jié)果:
3、編輯Excel數(shù)據(jù)
import openpyxl # 獲取工作簿對象 wb = openpyxl.load_workbook('1.xlsx') # 獲取工作表對象 sheet = wb['學生表'] # 修改指定單元格內(nèi)容 sheet.cell(row=1, column=4, value='老師') # 寫入多個單元格(追加模式,不會覆蓋之前的,從有數(shù)據(jù)的下一行開始) sheet.append(['王五', '三年級二班', '10歲']) # 復制"學生表",新sheet名稱為"學生表 Copy" ws_2 = wb.copy_worksheet(wb['學生表']) # 保存 wb.save('1.xlsx')
4、刪除Excel數(shù)據(jù)
import openpyxl # 獲取工作簿對象 wb = openpyxl.load_workbook('1.xlsx') # 選擇要刪除內(nèi)容的工作表和單元格(行, 列) sheet1 = wb['學生表'] cell_to_delete = sheet1.cell(row=2, column=1) # 刪除單元格內(nèi)容 cell_to_delete.value = None # 刪除 成績表 工作表 del wb['成績表'] # 保存 wb.save('1.xlsx')
總結(jié)
到此這篇關(guān)于python如何通過openpyxl讀寫Excel文件的文章就介紹到這了,更多相關(guān)python openpyxl讀寫Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python使用pandas和openpyxl讀取Excel表格的方法詳解
- python使用openpyxl打開及讀取excel表格過程
- python使用openpyxl實現(xiàn)對excel表格相對路徑的超鏈接的創(chuàng)建方式
- python openpyxl提取Excel圖片實現(xiàn)原理技巧
- python?openpyxl操作Excel的安裝使用
- python使用openpyxl庫處理Excel文件詳細教程
- Python通過OpenPyXL處理Excel的完整教程
- python使用openpyxl庫讀取Excel文件數(shù)據(jù)
- Python?Excel操作從零學習掌握openpyxl用法
- 使用python中的openpyxl操作excel詳解
- python操作Excel神器openpyxl看這一篇就夠了
- python使用Openpyxl操作Excel文件的實現(xiàn)
相關(guān)文章
Django傳遞數(shù)據(jù)給前端的3種方式小結(jié)
Django從后臺往前臺傳遞數(shù)據(jù)時有多種方法可以實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Django傳遞數(shù)據(jù)給前端的3種方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01利用python、tensorflow、opencv、pyqt5實現(xiàn)人臉實時簽到系統(tǒng)
這篇文章主要介紹了利用python、tensorflow、opencv、pyqt5實現(xiàn)人臉實時簽到系統(tǒng),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09Python實現(xiàn)XGBoost算法的應(yīng)用實戰(zhàn)
XGBoost(Extreme Gradient Boosting)是一種高效且廣泛使用的集成學習算法,它屬于梯度提升樹(GBDT)模型的一種改進,本文將結(jié)合實際案例,詳細介紹如何在Python中使用XGBoost算法進行模型訓練和預測,需要的朋友可以參考下2024-08-08python通過opencv實現(xiàn)圖片裁剪原理解析
這篇文章主要介紹了python通過opencv實現(xiàn)圖片裁剪原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01