python3中openpyxl的一些操作筆記
阿新 • • 發佈:2018-12-22
#!/usr/bin/env python # coding=utf-8 # https://blog.csdn.net/baili_sinan/article/details/78054037 python 操作Excel openpyxl的使用 from openpyxl import Workbook from openpyxl.styles import Font, Alignment wb = Workbook() # Create a workbook # 需要獲得特定的sheet,需要使用的方法是: ws3 = wb['Sheet2']#通過list傳入名字的方式 或者以下方法 # wb.get_sheet_by_name(title:str)#title為想要獲取的sheet_name print('----------------插入表操作--------------------') ws1 = wb.create_sheet('第一個sheet表',index=0) # 插入新的工作表,放在0位置 ws2 = wb.create_sheet('最後一個工作表')# 預設插在最後 print('----------------查看錶操作--------------------') ws = wb.active #獲得這個book的第一個sheet表名 print(ws) print(wb.worksheets) # 列印這個book裡面的所有工作表 print(wb.worksheets[1]) # 列印這個book裡面的第二個工作表 print(wb.sheetnames) # 檢視所有的sheet表,結果是列表形式,也可以用遍歷: for sheet in wb: print(sheet.title) # 相當於遍歷上面wb.sheetnames的列表 print('----------------修改表操作--------------------') ws.title = '修改第一個表名' # 因為 ws = wb.active獲取的是第一個表名,所以修改的就是第一個 wb.worksheets[1].title = '修改索引為1的表名' wb['最後一個工作表'].title = '修改名為最後一個工作表的表名' # 修改名為‘最後一個工作表’的表名字 print('----------------單元格、字型格式操作--------------------') d = ws.cell(row=1, column=1) d.font = Font(name='微軟雅黑', size=14, bold=True) # bold=True加粗 # 第一行第一列單元格內容水平居中和垂直居中 d.alignment = Alignment(horizontal='center', vertical='center') # 設定行高 ws.row_dimensions[1].height = 20 # 設定A列寬度,這樣只能設定一列寬度 # ws.column_dimensions['A'].width = 10 # 字典遍歷一起設定列寬 dic = {'A': '22', 'B': '13', 'C': '60', 'D': '27'} # 如果表頭資料增減,這裡面也要相應修改 for i, j in dic.items(): ws.column_dimensions[i].width = j # 列寬 # 凍結首行 ws.freeze_panes = 'A2' # 設定第一行第七列單元格格式為日期格式 ws.cell(row=1, column=7).number_format = 'yyyy/mm/dd' print('----------------copy表操作--------------------') copy_sheet = wb.copy_worksheet(wb.active) # copy第一個表 copy_sheet2 = wb.copy_worksheet(wb.worksheets[1]) # copy索引1位置的表 copy_sheet3 = wb.copy_worksheet(wb['最後一個工作表']) # copy名為‘最後一個工作表’的表 print('----------------單元格內容操作--------------------') A4 = ws['A4'] # 因為 ws = wb.active獲取的是第一個表名,所以直接訪問第一個表的A4單元格,返回A4單元格,或者是建立一個原本不存在的單元格 A4 = 'A4內容'# 對A4單元格內容修改 d = ws.cell(row = 4,column=2,value = 10) #修改4行2列(也就是B4)的值為10 data=['姓名','傑克','里斯','安妮'] for i in range(len(data)): ws['A%d'%(i+1)]=data[i] # 寫入第一個工作表A列資料 for j in range(len(data)): wb.worksheets[1]['A%d'%(i+1)] = data[i] # 寫入索引為1的工作表的A列資料 print('----------------刪除表操作--------------------') wb.remove(wb.worksheets[0]) # 刪除索引為0的sheet表 wb.remove(wb['最後一個工作表']) # 刪除名為‘最後一個工作表’的表 print('----------------儲存工作簿操作--------------------') wb.save('測試.xlsx') # 只有儲存后里面修改的內容才可以找到 # 儲存完檔案後,可以通過如下方法查詢檔案路徑 import os print(os.path.abspath('測試.xlsx')) #查詢列印某個檔案的路徑 ws_rows_len = ws.max_row # 最大行數 ws_columns_len = ws.max_column # 最大列數