一.相關說明:
1、openpyxl(可讀寫excel表)專門處理Excel2007及以上版本產生的xlsx文件;2007一下的版本為xls結尾的文件,需要使用 xlrd和xlwt庫進行操作
2、excel表的文字編碼如果是“gb2312” 讀取后就會顯示亂碼,請先轉成Unicode
3、workbook: 工作簿,一個excel文件包含多個sheet。
4、sheet:工作表,一個workbook有多個,表名識別,如“sheet1”,“sheet2”等。
5、cell: 單元格,存儲數據對象
二.openpyxl的使用方法
1. 新建
import openpyxl# 新建一個空excel,表名為sheet,文件名為testwb = openpyxl.Workbook() # 創建新的excel文件,一個工作簿(workbook)在創建的時候同時至少也新建了一張工作表(worksheet)wb.save('test.xlsx')
2.表操作
注:從此操作往后都使用如下的測試數據
import openpyxlimport openpyxl.styles# 打開已有的excelwb = openpyxl.load_workbook("test.xlsx")# ------------------ 表操作 ------------------# 新建sheet表wb.create_sheet(index=2, title="sheet3") # 可通過index控制創建的表的位置# 獲取所有表名sheet_names = wb.sheetnames # 得到工作簿的所有工作表名 結果: ['Sheet1', 'Sheet2', 'Sheet3']# 根據表名刪除sheet表wb.remove(wb[sheet_names[2]]) # 刪除上一步建的第3個工作表# 根據表名打開sheet表sheet1 = wb[sheet_names[0]] # 打開第一個 sheet 工作表
3.讀取數據
# ------------------ 讀取數據 ------------------# 獲取單元格數據sheet1_max_colum = sheet1.max_column # 獲取最大列數 結果:3# ws = wb.active # 獲取當前活動的sheet頁sheet1_max_row = sheet1.max_row # 獲取最大行數 結果:10A1_value = sheet1['A1'].value # 獲取單元格A1值 結果:a1A1_column = sheet1['A1'].column # 獲取單元格A1列值 結果: AA1_row = sheet1['A1'].row # 獲取單元格A1行號 結果: 1A1 = sheet1.cell(row=1, column=1).value # 獲取第一行第一列的單元格值 結果:a1# 獲取C列的所有數據list_sheet1_column_C = []for i in sheet1["C"]: list_sheet1_column_C.append(i.value)# 獲取第1行的所有數據list_sheet1_row_1 = []for i in sheet1[1]: list_sheet1_row_1.append(i.value)# 讀取所有數據list_sheet1_all = []for row in sheet1.rows: for cell in row: list_sheet1_all.append(cell.value) # 按行循環獲取所有的值,保存在 list_sheet1_all 列表中
4.寫入數據
# ------------------ 寫入數據 ------------------sheet1.cell(row=1, column=2, value="B1") # 修改第一行第二列的單元格的值為B1sheet1["A1"] = "A1" # 直接修改A1單元格的值為A1sheet1["B11"] = "B11" # 新增B11單元格的值為B11sheet1.title = "test_sheet" # 修改sheet1的表名為test_sheet
5.表格樣式調整
# ------------------ 表格樣式調整 ------------------# 表格樣式支持:字體、顏色、模式、邊框、數字格式等# A1單元格 等線24號加粗斜體,字體顏色淺藍色sheet1["B11"].font = openpyxl.styles.Font(name="宋體", size=24, italic=True, color="00CCFF", bold=True)# B1單元格 水平上下居中sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")# 第一行高度設置為30sheet1.row_dimensions[1].height = 30# C列的寬度設置為35sheet1.column_dimensions["C"].width = 35
新聞熱點
疑難解答