日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python基础】python使用openpyxl操作excel

發布時間:2025/3/12 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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而言。

sheet.dimensions

結果如下:

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=)方式
  • 這種方式更簡單,大家可以對比這兩種方式;

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) cell1 = sheet.cell(row = 1,column = 1) cell2 = sheet.cell(row = 11,column = 3) print(cell1.value, cell2.value)

結果如下:

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()方式,只不過一個是按行讀取,一個是按列讀取。

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) # 按行獲取值 for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2):for j in i:print(j.value) # 按列獲取值 for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2):for j in i:print(j.value)

結果如下:

③ sheet.rows()
  • 幫助我們獲取所有行

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) for i in sheet.rows:print(i)

結果如下:

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文件;

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) data = [["唐僧","男","180cm"],["孫悟空","男","188cm"],["豬八戒","男","175cm"],["沙僧","男","176cm"], ] for row in data:sheet.append(row) workbook.save(filename = "test.xlsx")

結果如下:

③ 在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行數的下方插入;

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) sheet.insert_cols(idx=4,amount=2) sheet.insert_rows(idx=5,amount=4) workbook.save(filename = "test.xlsx")

結果如下:

⑤ .delete_rows()和.delete_cols():刪除行和列
  • .delete_rows(idx=數字編號, amount=要刪除的行數)

  • .delete_cols(idx=數字編號, amount=要刪除的列數)

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) # 刪除第一列,第一行 sheet.delete_cols(idx=1) sheet.delete_rows(idx=1) workbook.save(filename = "test.xlsx")

結果如下:

⑥ .move_range():移動格子
  • .move_range("數據區域",rows=,cols=):正整數為向下或向右、負整數為向左或向上;

# 向左移動兩列,向下移動兩行 sheet.move_range("C1:D4",rows=2,cols=-1)

演示效果如下:

⑦ .create_sheet():創建新的sheet表格
  • .create_sheet("新的sheet名"):創建一個新的sheet表;

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(sheet) workbook.create_sheet("我是一個新的sheet") print(workbook.sheetnames) workbook.save(filename = "test.xlsx")

結果如下:

⑧ .remove():刪除某個sheet表
  • .remove("sheet名"):刪除某個sheet表;

workbook = load_workbook(filename = "test.xlsx") sheet = workbook.active print(workbook.sheetnames) # 這個相當于激活的這個sheet表,激活狀態下,才可以操作; sheet = workbook['我是一個新的sheet'] print(sheet) workbook.remove(sheet) print(workbook.sheetnames) workbook.save(filename = "test.xlsx")

結果如下:

⑨ .copy_worksheet():復制一個sheet表到另外一張excel表
  • 這個操作的實質,就是復制某個excel表中的sheet表,然后將文件存儲到另外一張excel表中;

workbook = load_workbook(filename = "a.xlsx") sheet = workbook.active print("a.xlsx中有這幾個sheet表",workbook.sheetnames) sheet = workbook['姓名'] workbook.copy_worksheet(sheet) workbook.save(filename = "test.xlsx")

結果如下:

⑩ sheet.title:修改sheet表的名稱
  • .title = "新的sheet表名"

workbook = load_workbook(filename = "a.xlsx") sheet = workbook.active print(sheet) sheet.title = "我是修改后的sheet名" print(sheet)

結果如下:

? 創建新的excel表格文件
from openpyxl import Workbookworkbook = Workbook() sheet = workbook.active sheet.title = "表格1" workbook.save(filename = "新建的excel表格")

結果如下:

? sheet.freeze_panes:凍結窗口
  • .freeze_panes = "單元格"

workbook = load_workbook(filename = "花園.xlsx") sheet = workbook.active print(sheet) sheet.freeze_panes = "C3" workbook.save(filename = "花園.xlsx") """ 凍結窗口以后,你可以打開源文件,進行檢驗; """

結果如下:

? sheet.auto_filter.ref:給表格添加“篩選器”
  • .auto_filter.ref = sheet.dimension 給所有字段添加篩選器;

  • .auto_filter.ref = "A1" 給A1這個格子添加“篩選器”,就是給第一列添加“篩選器”;

workbook = load_workbook(filename = "花園.xlsx") sheet = workbook.active print(sheet) sheet.auto_filter.ref = sheet["A1"] workbook.save(filename = "花園.xlsx")

結果如下:

4、批量調整字體和樣式

1)修改字體樣式
  • Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)

from openpyxl.styles import Font from openpyxl import load_workbookworkbook = load_workbook(filename="花園.xlsx") sheet = workbook.active cell = sheet["A1"] font = Font(name="微軟雅黑",size=20,bold=True,italic=True,color="FF0000") cell.font = font workbook.save(filename = "花園.xlsx") """ 這個color是RGB的16進制表示,自己下去百度學習; """

結果如下:

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';

from openpyxl.styles import Alignment from openpyxl import load_workbookworkbook = load_workbook(filename="花園.xlsx") sheet = workbook.active cell = sheet["A1"] alignment = Alignment(horizontal="center",vertical="center",text_rotation=45,wrap_text=True) cell.alignment = alignment workbook.save(filename = "花園.xlsx")

結果如下:

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

openpyxl import load_workbookworkbook = load_workbook(filename="花園.xlsx") sheet = workbook.active cell = sheet["D6"] side1 = Side(style="thin",color="FF0000") side2 = Side(style="thick",color="FFFF0000") border = Border(left=side1,right=side1,top=side2,bottom=side2) cell.border = border workbook.save(filename = "花園.xlsx")

結果如下:

5)設置填充樣式
  • PatternFill(fill_type=填充樣式,fgColor=填充顏色)

  • GradientFill(stop=(漸變顏色1,漸變顏色2……))

from openpyxl.styles import PatternFill,GradientFill from openpyxl import load_workbookworkbook = load_workbook(filename="花園.xlsx") sheet = workbook.active cell_b9 = sheet["B9"] pattern_fill = PatternFill(fill_type="solid",fgColor="99ccff") cell_b9.fill = pattern_fill cell_b10 = sheet["B10"] gradient_fill = GradientFill(stop=("FFFFFF","99ccff","000000")) cell_b10.fill = gradient_fill workbook.save(filename = "花園.xlsx")

結果如下:

6)設置行高和列寬
  • .row_dimensions[行編號].height = 行高

  • .column_dimensions[列編號].width = 列寬

workbook = load_workbook(filename="花園.xlsx") sheet = workbook.active # 設置第1行的高度 sheet.row_dimensions[1].height = 50 # 設置B列的寬度 sheet.column_dimensions["B"].width = 20 workbook.save(filename = "花園.xlsx") """ sheet.row_dimensions.height = 50 sheet.column_dimensions.width = 30 這兩句代碼,是將整個表的行高設置為50,列寬設置為30; """

結果如下:

7)合并單元格
  • .merge_cells(待合并的格子編號)

  • .merge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)

workbook = load_workbook(filename="花園.xlsx") sheet = workbook.active sheet.merge_cells("C1:D2") sheet.merge_cells(start_row=7,start_column=1,end_row=8,end_column=3) workbook.save(filename = "花園.xlsx")

結果如下:當然,也有“取消合并單元格”,用法一致。

  • .unmerge_cells(待合并的格子編號)

  • .unmerge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 本站qq群704220115,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【Python基础】python使用openpyxl操作excel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。