1. 程式人生 > >python3中openpyxl的一些操作筆記

python3中openpyxl的一些操作筆記

#!/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   # 最大列數