<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 9245字,需瀏覽 19分鐘

           ·

          2021-02-19 12:03

          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_workbookworkbook = load_workbook(filename = "test.xlsx")workbook.sheetnames

          結果如下:

          3)通過sheet名稱獲取表格
          from openpyxl import load_workbookworkbook = load_workbook(filename = "test.xlsx")workbook.sheetnamessheet = workbook["Sheet1"]print(sheet)

          結果如下:

          4)獲取表格的尺寸大小
          • 這里所說的尺寸大小,指的是excel表格中的數(shù)據(jù)有幾行幾列,針對的是不同的sheet而言。
          sheet.dimensions

          結果如下:

          5)獲取表格內某個格子的數(shù)據(jù)
          ① sheet["A1"]方式
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(sheet)cell1 = sheet["A1"]cell2 = sheet["C11"]print(cell1.value, cell2.value)
          """workbook.active 打開激活的表格;sheet["A1"] 獲取A1格子的數(shù)據(jù);cell.value 獲取格子中的值;"""

          結果如下:

          ② sheet.cell(row=, column=)方式
          • 這種方式更簡單,大家可以對比這兩種方式;
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(sheet)cell1 = sheet.cell(row = 1,column = 1)cell2 = sheet.cell(row = 11,column = 3)print(cell1.value, cell2.value)

          結果如下:

          6)獲取某個格子的行數(shù)、列數(shù)、坐標
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(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 獲取某個格子的行數(shù);.columns 獲取某個格子的列數(shù);.corordinate 獲取某個格子的坐標;"""

          結果如下:

          7)獲取一系列格子
          ① sheet[]方式
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(sheet)# 獲取A1:C2區(qū)域的值cell = sheet["A1:C2"]print(cell)for i in cell:    for j in i:        print(j.value)

          結果如下:特別的:如果我們只想獲取“A列”,或者獲取“A-C列”,可以采取如下方式:

          sheet["A"]    --- 獲取A列的數(shù)據(jù)sheet["A:C"]    --- 獲取A,B,C三列的數(shù)據(jù)sheet[5]   --- 只獲取第5行的數(shù)據(jù)
          ② .iter_rows()方式
          • 當然有.iter_rows()方式,肯定也會有.iter_cols()方式,只不過一個是按行讀取,一個是按列讀取。
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(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.activeprint(sheet)for i in sheet.rows:        print(i)

          結果如下:

          3、python如何向excel中寫入某些內容?

          1)修改表格中的內容
          ① 向某個格子中寫入內容并保存
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(sheet)sheet["A1"] = "哈嘍" # 這句代碼也可以改為cell = sheet["A1"] cell.value = "哈嘍"workbook.save(filename = "哈嘍.xlsx")"""注意:我們將“A1”單元格的數(shù)據(jù)改為了“哈嘍”,并另存為了“哈嘍.xlsx”文件。如果我們保存的時候,不修改表名,相當于直接修改源文件;"""

          結果如下:

          ② .append():向表格中插入行數(shù)據(jù)
          • .append()方式:會在表格已有的數(shù)據(jù)后面,增添這些數(shù)(按行插入);
          • 這個操作很有用,爬蟲得到的數(shù)據(jù),可以使用該方式保存成Excel文件;
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(sheet)data = [    ["唐僧","男","180cm"],    ["孫悟空","男","188cm"],    ["豬八戒","男","175cm"],    ["沙僧","男","176cm"],]for row in data:    sheet.append(row)workbook.save(filename = "test.xlsx")

          結果如下:

          ③ 在python中使用excel函數(shù)公式(很有用)
          # 這是我們在excel中輸入的公式=IF(RIGHT(C2,2)="cm",C2,SUBSTITUTE(C2,"m","")*100&"cm")# 那么,在python中怎么插入excel公式呢?workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(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函數(shù)公式”呢?我們可以使用如下操作查看一下。

          import openpyxlfrom openpyxl.utils import FORMULAEprint(FORMULAE)

          結果如下:

          ④ .insert_cols()和.insert_rows():插入空行和空列
          • .insert_cols(idx=數(shù)字編號, amount=要插入的列數(shù)),插入的位置是在idx列數(shù)的左側插入;
          • .insert_rows(idx=數(shù)字編號, amount=要插入的行數(shù)),插入的行數(shù)是在idx行數(shù)的下方插入;
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(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=數(shù)字編號, amount=要刪除的行數(shù))
          • .delete_cols(idx=數(shù)字編號, amount=要刪除的列數(shù))
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(sheet)# 刪除第一列,第一行sheet.delete_cols(idx=1)sheet.delete_rows(idx=1)workbook.save(filename = "test.xlsx")

          結果如下:

          ⑥ .move_range():移動格子
          • .move_range("數(shù)據(jù)區(qū)域",rows=,cols=):正整數(shù)為向下或向右、負整數(shù)為向左或向上;
          # 向左移動兩列,向下移動兩行sheet.move_range("C1:D4",rows=2,cols=-1)

          演示效果如下:

          ⑦ .create_sheet():創(chuàng)建新的sheet表格
          • .create_sheet("新的sheet名"):創(chuàng)建一個新的sheet表;
          workbook = load_workbook(filename = "test.xlsx")sheet = workbook.activeprint(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.activeprint(workbook.sheetnames)# 這個相當于激活的這個sheet表,激活狀態(tài)下,才可以操作;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.activeprint("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.activeprint(sheet)sheet.title = "我是修改后的sheet名"print(sheet)

          結果如下:

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

          結果如下:

          ? sheet.freeze_panes:凍結窗口
          • .freeze_panes = "單元格"
          workbook = load_workbook(filename = "花園.xlsx")sheet = workbook.activeprint(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.activeprint(sheet)sheet.auto_filter.ref = sheet["A1"]workbook.save(filename = "花園.xlsx")

          結果如下:

          4、批量調整字體和樣式

          1)修改字體樣式
          • Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)
          from openpyxl.styles import Fontfrom openpyxl import load_workbook
          workbook = load_workbook(filename="花園.xlsx")sheet = workbook.activecell = sheet["A1"]font = Font(name="微軟雅黑",size=20,bold=True,italic=True,color="FF0000")cell.font = fontworkbook.save(filename = "花園.xlsx")"""這個color是RGB的16進制表示,自己下去百度學習;"""

          結果如下:

          2)獲取表格中格子的字體樣式
          from openpyxl.styles import Fontfrom openpyxl import load_workbook
          workbook = load_workbook(filename="花園.xlsx")sheet = workbook.activecell = sheet["A2"]font = cell.fontprint(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 Alignmentfrom openpyxl import load_workbook
          workbook = load_workbook(filename="花園.xlsx")sheet = workbook.activecell = sheet["A1"]alignment = Alignment(horizontal="center",vertical="center",text_rotation=45,wrap_text=True)cell.alignment = alignmentworkbook.save(filename = "花園.xlsx")

          結果如下:

          4)設置邊框樣式
          • Side(style=邊線樣式,color=邊線顏色)
          • Border(left=左邊線樣式,right=右邊線樣式,top=上邊線樣式,bottom=下邊線樣式)
          • style參數(shù)的種類:'double, 'mediumDashDotDot', 'slantDashDot','dashDotDot','dotted','hair', 'mediumDashed, 'dashed', 'dashDot', 'thin','mediumDashDot','medium', 'thick'from openpyxl.styles import Side,Borderfrom
          openpyxl import load_workbook
          workbook = load_workbook(filename="花園.xlsx")sheet = workbook.activecell = 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 = borderworkbook.save(filename = "花園.xlsx")

          結果如下:

          5)設置填充樣式
          • PatternFill(fill_type=填充樣式,fgColor=填充顏色)
          • GradientFill(stop=(漸變顏色1,漸變顏色2……))
          from openpyxl.styles import PatternFill,GradientFillfrom openpyxl import load_workbook
          workbook = load_workbook(filename="花園.xlsx")sheet = workbook.activecell_b9 = sheet["B9"]pattern_fill = PatternFill(fill_type="solid",fgColor="99ccff")cell_b9.fill = pattern_fillcell_b10 = sheet["B10"]gradient_fill = GradientFill(stop=("FFFFFF","99ccff","000000"))cell_b10.fill = gradient_fillworkbook.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 = 20workbook.save(filename = "花園.xlsx")"""sheet.row_dimensions.height = 50sheet.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.activesheet.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=結束列號)

          往期精彩回顧





          本站qq群704220115,加入微信群請掃碼:

          瀏覽 89
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色色五月婷婷 | 中文字幕日本无码 | 天天弄天天模 | 国产操逼视频。 | 91啪啪啪视频专用网站 |