【Python基础】python使用openpyxl操作excel
1、openpyxl庫介紹
openpyxl最好用的python操作excel表格庫,不接受反駁;
openpyxl官網鏈接:openpyxl官網
openpyxl只支持【.xlsx / .xlsm / .xltx / .xltm】格式的文件;
2、python怎么打開及讀取表格內容?
1)Excel表格述語
這里需要大家仔細查看圖中的每一項內容,知道什么是“行(row)、列(column)”?什么是“格子(cell)”?什么是“sheet表”?
2)打開Excel表格并獲取表格名稱
from openpyxl import load_workbook workbook = load_workbook(filename = "test.xlsx") workbook.sheetnames結果如下:
3)通過sheet名稱獲取表格
from openpyxl import load_workbook workbook = load_workbook(filename = "test.xlsx") workbook.sheetnames sheet = workbook["Sheet1"] print(sheet)結果如下:
4)獲取表格的尺寸大小
這里所說的尺寸大小,指的是excel表格中的數據有幾行幾列,針對的是不同的sheet而言。
結果如下:
5)獲取表格內某個格子的數據
① sheet["A1"]方式
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) cell1 = sheet["A1"] cell2 = sheet["C11"] print(cell1.value, cell2.value)""" workbook.active 打開激活的表格; sheet["A1"] 獲取A1格子的數據; cell.value 獲取格子中的值; """結果如下:
② sheet.cell(row=, column=)方式
這種方式更簡單,大家可以對比這兩種方式;
結果如下:
6)獲取某個格子的行數、列數、坐標
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) cell1 = sheet["A1"] cell2 = sheet["C11"] print(cell1.value, cell1.row, cell1.column, cell1.coordinate) print(cell2.value, cell2.row, cell2.column, cell2.coordinate) """ .row 獲取某個格子的行數; .columns 獲取某個格子的列數; .corordinate 獲取某個格子的坐標; """結果如下:
7)獲取一系列格子
① sheet[]方式
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) # 獲取A1:C2區域的值 cell = sheet["A1:C2"] print(cell) for i in cell:for j in i:print(j.value)結果如下:特別的:如果我們只想獲取“A列”,或者獲取“A-C列”,可以采取如下方式:
sheet["A"] --- 獲取A列的數據 sheet["A:C"] --- 獲取A,B,C三列的數據 sheet[5] --- 只獲取第5行的數據② .iter_rows()方式
當然有.iter_rows()方式,肯定也會有.iter_cols()方式,只不過一個是按行讀取,一個是按列讀取。
結果如下:
③ sheet.rows()
幫助我們獲取所有行
結果如下:
3、python如何向excel中寫入某些內容?
1)修改表格中的內容
① 向某個格子中寫入內容并保存
workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) sheet["A1"] = "哈嘍" # 這句代碼也可以改為cell = sheet["A1"] cell.value = "哈嘍" workbook.save(filename = "哈嘍.xlsx") """ 注意:我們將“A1”單元格的數據改為了“哈嘍”,并另存為了“哈嘍.xlsx”文件。 如果我們保存的時候,不修改表名,相當于直接修改源文件; """結果如下:
② .append():向表格中插入行數據
.append()方式:會在表格已有的數據后面,增添這些數(按行插入);
這個操作很有用,爬蟲得到的數據,可以使用該方式保存成Excel文件;
結果如下:
③ 在python中使用excel函數公式(很有用)
# 這是我們在excel中輸入的公式 =IF(RIGHT(C2,2)="cm",C2,SUBSTITUTE(C2,"m","")*100&"cm") # 那么,在python中怎么插入excel公式呢? workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) sheet["D1"] = "標準身高" for i in range(2,16):sheet["D{}".format(i)] = '=IF(RIGHT(C{},2)="cm",C{},SUBSTITUTE(C{},"m","")*100&"cm")'.format(i,i,i) workbook.save(filename = "test.xlsx")結果如下:此時,你肯定會好奇,python究竟支持寫哪些“excel函數公式”呢?我們可以使用如下操作查看一下。
import openpyxl from openpyxl.utils import FORMULAE print(FORMULAE)結果如下:
④ .insert_cols()和.insert_rows():插入空行和空列
.insert_cols(idx=數字編號, amount=要插入的列數),插入的位置是在idx列數的左側插入;
.insert_rows(idx=數字編號, amount=要插入的行數),插入的行數是在idx行數的下方插入;
結果如下:
⑤ .delete_rows()和.delete_cols():刪除行和列
.delete_rows(idx=數字編號, amount=要刪除的行數)
.delete_cols(idx=數字編號, amount=要刪除的列數)
結果如下:
⑥ .move_range():移動格子
.move_range("數據區域",rows=,cols=):正整數為向下或向右、負整數為向左或向上;
演示效果如下:
⑦ .create_sheet():創建新的sheet表格
.create_sheet("新的sheet名"):創建一個新的sheet表;
結果如下:
⑧ .remove():刪除某個sheet表
.remove("sheet名"):刪除某個sheet表;
結果如下:
⑨ .copy_worksheet():復制一個sheet表到另外一張excel表
這個操作的實質,就是復制某個excel表中的sheet表,然后將文件存儲到另外一張excel表中;
結果如下:
⑩ sheet.title:修改sheet表的名稱
.title = "新的sheet表名"
結果如下:
? 創建新的excel表格文件
from openpyxl import Workbookworkbook = Workbook() sheet = workbook.active sheet.title = "表格1" workbook.save(filename = "新建的excel表格")結果如下:
? sheet.freeze_panes:凍結窗口
.freeze_panes = "單元格"
結果如下:
? sheet.auto_filter.ref:給表格添加“篩選器”
.auto_filter.ref = sheet.dimension 給所有字段添加篩選器;
.auto_filter.ref = "A1" 給A1這個格子添加“篩選器”,就是給第一列添加“篩選器”;
結果如下:
4、批量調整字體和樣式
1)修改字體樣式
Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)
結果如下:
2)獲取表格中格子的字體樣式
from openpyxl.styles import Font from openpyxl import load_workbookworkbook = load_workbook(filename="花園.xlsx") sheet = workbook.active cell = sheet["A2"] font = cell.font print(font.name, font.size, font.bold, font.italic, font.color)結果如下:
3)設置對齊樣式
Alignment(horizontal=水平對齊模式,vertical=垂直對齊模式,text_rotation=旋轉角度,wrap_text=是否自動換行)
水平對齊:‘distributed',‘justify',‘center',‘leftfill', ‘centerContinuous',‘right,‘general';
垂直對齊:‘bottom',‘distributed',‘justify',‘center',‘top';
結果如下:
4)設置邊框樣式
Side(style=邊線樣式,color=邊線顏色)
Border(left=左邊線樣式,right=右邊線樣式,top=上邊線樣式,bottom=下邊線樣式)
style參數的種類:'double, 'mediumDashDotDot', 'slantDashDot','dashDotDot','dotted','hair', 'mediumDashed, 'dashed', 'dashDot', 'thin','mediumDashDot','medium', 'thick'from openpyxl.styles import Side,Borderfrom
結果如下:
5)設置填充樣式
PatternFill(fill_type=填充樣式,fgColor=填充顏色)
GradientFill(stop=(漸變顏色1,漸變顏色2……))
結果如下:
6)設置行高和列寬
.row_dimensions[行編號].height = 行高
.column_dimensions[列編號].width = 列寬
結果如下:
7)合并單元格
.merge_cells(待合并的格子編號)
.merge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)
結果如下:當然,也有“取消合并單元格”,用法一致。
.unmerge_cells(待合并的格子編號)
.unmerge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)
總結
以上是生活随笔為你收集整理的【Python基础】python使用openpyxl操作excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【面试招聘】非科班小白上岸的学习路线
- 下一篇: 【机器学习基础】一文归纳Python特征