使用python的openpyxl模塊操做excel

openpyxl(可讀寫excel表)專門處理Excel2007及以上版本產生的xlsx文件,xls和xlsx之間轉換容易python

openpyxl的安裝

模塊的引入

from openpyxl import Workbook
from openpyxl.styles import Color, Font, Alignment
from openpyxl.styles import Border, Side, Font
from openpyxl import load_workbook

模塊的基本用法

 建立與保存

wb = Workbook()  # 建立一個新的excel
ws = wb.active  # 得到這個excel的第一個sheet表名
wb.save('xx.xlsx') # 保存excel,如果保存路徑有同名文件則會覆蓋只有保存后里面修改的內容才能夠找到
 

 

 打開存在的excel

file_home = r"E:\demo.xlsx" # 文件的絕對路徑
wb = load_workbook(file_home)
根據Sheet1這個sheet名字來獲取該sheet
ws = wb['Sheet1']

 

對工做表的操做

print(wb.worksheets)  # 打印這個book裏面的全部工做表
print(wb.worksheets[1])  # 打印這個book裏面的第二個工做表
print(wb.sheetnames)  # 查看全部的sheet表,結果是列表形式,也能夠用遍歷:
ws = wb.active  # 得到這個book的第一個sheet表名
wb.remove(wb.worksheets[0])  # 刪除索引爲0的sheet表
wb.remove(wb['xxx'])  # 刪除名爲‘xxx’的表ws.title = '修改第一個表名'  # 由於 ws = wb.active獲取的是第一個表名,因此修改的就是第一個
wb.worksheets[1].title = '修改索引爲1的表名'
wb['xxx'].title = '修更名爲最後一個工做表的表名' # 修更名爲‘xxx’的表名字
ws1 = wb.create_sheet('新的sheet表', index=0) # 插入新的工做表,放在0位置
ws2 = wb.create_sheet('最後一個工做表') # 默認插在最後

 

對單元格的操做

file_home = r"E:\python-file\my_python\demo.xlsx"
wb = load_workbook(file_home)
ws = wb.active  # 獲取第一個工做表
ws_rows_len = ws.max_row  # 最大行數
ws_columns_len = ws.max_column  # 最大列數
ws_rows = ws.rows  # 獲取全部的行,獲得的是可迭代的
ws_columns = ws.columns  # 獲取全部的列,獲得的是可迭代的
b4_1 = ws.cell(row=1, column=1)
b4_2 = ws['B4']
print(b4_1.value, b4_2.value)  # 獲取單元格內容,用過value獲得其值

 

修改單元格

file_home = r"E:\python-file\my_python\demo.xlsx"
wb = load_workbook(file_home)
ws = wb.active  # 獲取第一個工做表
ws.merge('A1:B3')  # 合併單元格A1:B3
ws["A1"] = "=SUM(B1:C1)"  # 經過公式計算產生寫入的值
ws["A1"] = 'A1內容'  # 對A1單元格內容修改,如果對合並的單元格的值進行修改,只需修改合併的單元格中左上角的單元格的內容
ws.cell(row=4, column=2, value=10)  # 經過座標,修改4行2列(也就是B4)的值爲10
ws.row_dimensions[1].height = 34  # 設置行高
ws.column_dimensions['B'].width = 22  # 設置列寬
ws["A1"] = "=SUM(B1:C1)"  # 經過公式計算產生寫入的值
ws['A35'].font = Font(name='微軟雅黑', size=14, bold=True)  # 設置單元格字體,bold=True加粗
ws["A1"].alignment = Alignment(horizontal='center', vertical='center')  # 第一行第一列單元格內容水平居中和垂直居中,也能夠選擇左對齊或右對齊
ws['A35'].border = Border(left=Side(border_style=None,  color='FF000000'),
                          right=Side(border_style=None,  color='FF000000'),
                          top=Side(border_style=None,  color='FF000000'),
                          bottom=Side(border_style=1,  color='FF000000'),)
# 設置單元格上下左右邊框, style屬性:'dashDot','dashDotDot', 'dashed','dotted',
#                             'double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot',
#                             'mediumDashed', 'slantDashDot', 'thin', 'thick'爲excel中的默認邊框
# 對合並的單元格加邊框時須要注意,不像賦值同樣,而是須要將其中的全部的單元格(合併前)都加邊框
相關文章
相關標籤/搜索