欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?操作?Excel?之?openpyxl?模塊

 更新時(shí)間:2022年05月16日 16:32:47   作者:??夢想橡皮擦????  
這篇文章主要介紹了Python?操作?Excel?之?openpyxl?模塊,文章基于python的相關(guān)資料展開對(duì)?openpyxl?模塊的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

正式開始前依舊是模塊的安裝,使用如下命令即可實(shí)現(xiàn):

pip install openpyxl

官方對(duì)于該庫的描述是:

A Python library to read/write Excel 2010 xlsx/xlsm files

一款用于讀寫 Excel 2010 xlsx/xlsm 文件的庫。

1.打開已有 Excel 文件

拿到該庫之后,直接嘗試打開一個(gè)本地 Excel ,然后才能對(duì)其中的數(shù)據(jù)進(jìn)行控制。

from openpyxl  import load_workbook
wb = load_workbook('測試表格.xlsx')
# 輸出
# <openpyxl.workbook.workbook.Workbook object at 0x00000195680F96D0>

繼續(xù)編碼前還是需要了解一些關(guān)于 Excel 的相關(guān)知識(shí)點(diǎn),如下所示:

  • Excel 中列名是字母,行號(hào)是數(shù)字,例如鎖定第一個(gè)單元格是 A1,然后是 A2,接下來是A3;
  • Excel 中有工作簿,工作表,單元格三個(gè)概念組成,對(duì)應(yīng)到 openpyxl 中就是 Workbook 類,Worksheet 類,Cell 類。

操作 Excel 基本遵循三步走策略:

  • 打開 Excel,產(chǎn)生 Workbook 對(duì)象;
  • 獲取表格對(duì)象,即 Worksheet 對(duì)象;
  • 操作表格中的單元格對(duì)象,即 Cell 對(duì)象。

有這些概念之后,你會(huì)發(fā)現(xiàn)后續(xù)的代碼就會(huì)變得極容易理解。

2.創(chuàng)建一個(gè) Excel 文件,并修改 sheet

接下來的代碼將會(huì)創(chuàng)建一個(gè) Excel 文件,并將第一個(gè)默認(rèn) sheet 修改為【測試】

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一個(gè) sheet 名稱
    ws.title = "測試"
    # 保存
    wb.save('example.xlsx')

在 Python 文件的運(yùn)行目錄會(huì)生成如下文件,打開關(guān)注第一個(gè) sheet 即可。

如果希望創(chuàng)建第二個(gè)表格頁(sheet),繼續(xù)在 Workbook 對(duì)象中追加 sheet 即可。

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一個(gè) sheet 頁名稱
    ws.title = "Sheet1"
    # 新增第二個(gè) sheet 頁
    ws2 = wb.create_sheet("Sheet2")

    # 新增第三個(gè) sheet 頁
    # 將 create_sheet() 函數(shù)中的第二個(gè)參數(shù)定義為 0,表示該 sheet 在最前面
    ws3 = wb.create_sheet("Sheet3", 0)
    # 保存
    wb.save('example.xlsx')

追加 sheet 使用的函數(shù)是 create_sheet() ,在使用的時(shí)候,可以根據(jù)第二個(gè)參數(shù)進(jìn)行順序設(shè)置。

如果你希望對(duì) sheet 頁簽進(jìn)行更細(xì)節(jié)的設(shè)置,可以進(jìn)行屬性配置,例如修改 sheet 頁簽背景

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一個(gè) sheet 頁名稱
    ws.title = "Sheet1"
    ws.sheet_properties.tabColor = "03a9f4"
    # 新增第二個(gè) sheet 頁
    ws2 = wb.create_sheet("Sheet2")
    # 新增第三個(gè) sheet 頁
    # 將 create_sheet() 函數(shù)中的第二個(gè)參數(shù)定義為 0,表示該 sheet 在最前面
    ws3 = wb.create_sheet("Sheet3", 0)
    # 保存
    wb.save('example.xlsx')

3.選擇 sheet 的不同方式

使用 wb["Sheet1"] 可以通過類字典模式進(jìn)行 sheet 讀取,還可以使用 get_sheet_by_name() 方法進(jìn)行調(diào)用,但是該方法已被棄用,建議掌握第一種用法即可。

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一個(gè) sheet 頁名稱
    ws.title = "Sheet1"
    ws_1 = wb["Sheet1"]
    ws_1_1 = wb.get_sheet_by_name("Sheet1")  # 該方法將被棄用,建議用上述形式調(diào)用
    print(ws_1)
    print(ws_1_1)
    # wb.save('example.xlsx')

4.Worksheet對(duì)象

Worksheet 對(duì)象即表格對(duì)象,用于得到單元格中的數(shù)據(jù),修改表格中的內(nèi)容。

優(yōu)先學(xué)習(xí)的相關(guān)屬性如下所示:

  • title:表格的標(biāo)題;
  • dimensions:表格數(shù)據(jù)區(qū)域大??;
  • max_row:表格的最大行;
  • min_row:表格的最小行;
  • max_column:表格的最大列;
  • min_column:表格的最小列;
  • rows:按行獲取單元格(Cell)對(duì)象 ,返回生成器;
  • columns:按列獲取單元格(Cell對(duì)象),返回生成器。

具體代碼如下所示,其中用到的表格參考下述截圖:

from openpyxl  import load_workbook
wb = load_workbook('測試表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    # 更改第一個(gè) sheet 頁名稱
    ws.title = "My_Sheet"
    ws_1 = wb["My_Sheet"]
    print(ws_1.title)  # 獲取標(biāo)題
    print(ws_1.dimensions)  # 有數(shù)據(jù)的區(qū)域大小,無數(shù)據(jù)是 A1:A1
    print(ws_1.max_row) # 最大行數(shù)
    print(ws_1.min_row) # 最小行數(shù)
    print(ws_1.max_column)
    print(ws_1.min_column)
    print(ws_1.rows)
    print(ws_1.columns)

除屬性外,Worksheet 對(duì)象的方法如下所示 Worksheet方法如下:

  • iter_rows:按行獲取所有單元格,其值可以調(diào)用 Cell 的屬性(min_row, max_row, min_col, max_col);
  • iter_columns:按列獲取所有的單元格
  • append:在表格末尾添加數(shù)據(jù)
  • merged_cells:合并多個(gè)單元格
  • unmerged_cells:移除合并的單元格

Worksheet 對(duì)象的屬性和方法基本都會(huì)返回 Cell對(duì)象,即單元格對(duì)象。

5.Cell 對(duì)象

Cell對(duì)象比較簡單,常用的屬性如下:

  • row :單元格所在的行
  • column:單元格坐在的列
  • value:單元格的值
  • coordinate:單元格的坐標(biāo)
from openpyxl import load_workbook
wb = load_workbook('測試表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    for item in ws.rows:
        print(item)  # 按照行輸出
        print(item[0].value)  # 輸出單元格的值

操作修改單元格數(shù)據(jù) 獲取單元格之后,就可以對(duì)其中的值進(jìn)行操作,例如下述代碼

from openpyxl import load_workbook
wb = load_workbook('測試表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    # 輸出修改前
    for item in ws.rows:
        print(item)  # 按照行輸出
        print(item[0].value)  # 輸出單元格的值
        item[0].value = 1
    # 輸出修改后的值,注意不保存文件,數(shù)據(jù)不會(huì)存儲(chǔ)
    for item in ws.rows:
        print(item[0].value)  # 輸出單元格的值
    # wb.save('example.xlsx')

單元格內(nèi)容修改完畢之后,需要使用 wb.save() 方法才可以存儲(chǔ)文件修改之后的內(nèi)容。

使用行列式定位單元格 使用工作表的 cell() 方法,可以定位到單元格,具體用法如下所示

from openpyxl import load_workbook
wb = load_workbook('測試表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    # 輸出修改前
    for item in ws.rows:
        print(item)  # 按照行輸出
        print(item[0].value)  # 輸出單元格的值
        item[0].value = 1
    # 輸出修改后的值,注意不保存文件,數(shù)據(jù)不會(huì)存儲(chǔ)
    for item in ws.rows:
        print(item[0].value)  # 輸出單元格的值

    # 直接定位單元格
    c = ws.cell(row=2, column=3)
    print(c)
    print("單元格A2,B3里面的內(nèi)容是",c.value)
    wb.save('example.xlsx')

6.單元格插入圖像

使用如下代碼,可以在Excel 中的單元格內(nèi)添加圖片。 在正式編碼前,先導(dǎo)入如下模塊

from openpyxl.drawing.image import Image

接下來就可以在對(duì)應(yīng)的單元格中去添加相應(yīng)的圖片了,具體代碼如下所示,其中比較重要的是 add_image() 方法。

 # 創(chuàng)建圖像,參數(shù)是圖片路徑
img = Image('cup_PNG2001.png')
# add_image(圖片,要添加單元格的位置)
ws.add_image(img, 'A2')
wb.save('example.xlsx')

7.設(shè)置單元格樣式

在 Excel 中,我們可以針對(duì)單元格樣式進(jìn)行操作,例如加粗,傾斜,背景色。

需要提前導(dǎo)入的相關(guān)類:

from openpyxl.styles import Font, colors, Alignment

接下來可以修改相應(yīng)的字體:

from openpyxl import load_workbook
from openpyxl.styles import Font, colors, Alignment

wb = load_workbook('測試表格.xlsx')

if __name__ == '__main__':
    ws = wb.active
 
    c_style = Font(size=20, bold=True, italic=True, color='ff0000')

    ws['A1'].font = c_style

    wb.save('example.xlsx')

運(yùn)行結(jié)果如下所示,注意 A1 單元格相關(guān)變化。在這里需要注意代碼中只要存在一處錯(cuò)誤,新的樣式就不會(huì)起到作用。

其它內(nèi)容你可自行進(jìn)行擴(kuò)展,例如設(shè)置對(duì)齊方式

ws['B1'].alignment = Alignment(horizontal='center', vertical='center')

行高,列寬,單元格合并與取消合并,這些內(nèi)容由你自行完成。

到此這篇關(guān)于Python 操作 Excel 之 openpyxl 模塊的文章就介紹到這了,更多相關(guān)python openpyxl 模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python進(jìn)行圖片的文字識(shí)別詳細(xì)代碼

    使用python進(jìn)行圖片的文字識(shí)別詳細(xì)代碼

    Tesseract OCR是一款由Google團(tuán)隊(duì)開發(fā)的開源OCR引擎,用于將圖片、PDF 等格式中的文本轉(zhuǎn)換為可編輯的文本格式,本文主要介紹了Python進(jìn)行圖片的文字識(shí)別功能OCR的相關(guān)知識(shí),需要的朋友可以參考下
    2023-05-05
  • OpenCV 圖像旋轉(zhuǎn)、平移、縮放操作代碼

    OpenCV 圖像旋轉(zhuǎn)、平移、縮放操作代碼

    這篇文章主要介紹了OpenCV 圖像旋轉(zhuǎn)、平移、縮放,本文是 OpenCV圖像視覺入門之路的第7篇文章,本文詳細(xì)的進(jìn)行了圖像的縮放 cv2.resize()、旋轉(zhuǎn) cv2.flip()、平移 cv2.warpAffine()等操作,需要的朋友可以參考下
    2022-12-12
  • python將ansible配置轉(zhuǎn)為json格式實(shí)例代碼

    python將ansible配置轉(zhuǎn)為json格式實(shí)例代碼

    這篇文章主要介紹了python將ansible配置轉(zhuǎn)為json格式實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • python進(jìn)程池和線程池的區(qū)別

    python進(jìn)程池和線程池的區(qū)別

    本文主要介紹了python進(jìn)程池和線程池的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • django mysql數(shù)據(jù)庫及圖片上傳接口詳解

    django mysql數(shù)據(jù)庫及圖片上傳接口詳解

    這篇文章主要介紹了django mysql數(shù)據(jù)庫及圖片上傳接口詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Django實(shí)現(xiàn)文章詳情頁面跳轉(zhuǎn)代碼實(shí)例

    Django實(shí)現(xiàn)文章詳情頁面跳轉(zhuǎn)代碼實(shí)例

    這篇文章主要介紹了Django實(shí)現(xiàn)文章詳情頁面跳轉(zhuǎn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法

    Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法

    今天小編就為大家分享一篇Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Playwright快速上手指南(入門教程)

    Playwright快速上手指南(入門教程)

    Playwright是由微軟公司2020年初發(fā)布的新一代自動(dòng)化測試工具,相較于目前最常用的Selenium,本文就詳細(xì)的介紹一下快速上手指南,對(duì)新手有一定的幫助,感興趣的可以了解一下
    2021-12-12
  • pytorch AvgPool2d函數(shù)使用詳解

    pytorch AvgPool2d函數(shù)使用詳解

    今天小編就為大家分享一篇pytorch AvgPool2d函數(shù)使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python樣條插值的實(shí)現(xiàn)代碼

    python樣條插值的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了python樣條插值的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評(píng)論