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

Python自動(dòng)化操作Excel的多種方式(Pandas+openpyxl+xlrd)

 更新時(shí)間:2025年08月06日 09:46:11   作者:長風(fēng)清留揚(yáng)  
這篇文章主要為大家詳細(xì)介紹了Python自動(dòng)化操作Excel的多種方式,包括Pandas,openpyxl和xlrd,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

Pandas操作Excel

安裝Pandas

pip install pandas

 使用pandas操作Excel文件主要涉及讀?。?code>read_excel)和寫入(to_excel)兩個(gè)主要操作。

讀取Excel文件(read_excel)

pandasread_excel函數(shù)用于讀取Excel文件(.xls.xlsx),并將其內(nèi)容加載到DataFrame對(duì)象中。

語法參數(shù)

  • io: 文件路徑或文件對(duì)象。
  • sheet_name: 指定要讀取的工作表名稱或索引??梢允亲址?、整數(shù)、字符串列表或None。如果是None,則返回字典,其中包含所有工作表。
  • header: 指定作為列名的行,默認(rèn)為0(第一行)。如果文件沒有列標(biāo)題,可以設(shè)置為None。
  • names: 用于結(jié)果的列名的列表,如果文件不包含列標(biāo)題行,應(yīng)該明確指定此參數(shù)。
  • index_col: 用作行索引的列編號(hào)或列名,可以是整數(shù)、字符串、整數(shù)列表、字符串列表或False(默認(rèn))。
  • usecols: 返回列的列號(hào)或列名列表。
  • dtype: 數(shù)據(jù)或字典,用于強(qiáng)制指定某些列的數(shù)據(jù)類型。
  • engine: 用于讀取Excel文件的引擎。None將嘗試使用io的擴(kuò)展名來選擇引擎。如果安裝了xlrd,則.xls文件將使用它;否則,將使用openpyxlodfpy(對(duì)于.ods文件)。

案例:

import pandas as pd  
  
# 讀取Excel文件  
df = pd.read_excel('example.xlsx', sheet_name='Sheet1', header=0, index_col=None, usecols=None, dtype=None)  
  
# 顯示前幾行數(shù)據(jù)  
print(df.head())  
  
# 如果文件沒有列標(biāo)題  
df_no_header = pd.read_excel('example_no_header.xlsx', header=None, names=['Column1', 'Column2', 'Column3'])  
print(df_no_header.head())  
  
# 讀取多個(gè)工作表  
xls = pd.ExcelFile('example.xlsx')  
df1 = pd.read_excel(xls, 'Sheet1')  
df2 = pd.read_excel(xls, 'Sheet2')  
# 或者  
dfs = pd.read_excel(xls, sheet_name=None)  # 返回一個(gè)字典,鍵為工作表名,值為DataFrame

進(jìn)階案例:讀取特定單元格范圍

雖然read_excel沒有直接讀取特定單元格范圍的參數(shù),但你可以通過usecols和行切片來實(shí)現(xiàn)類似的效果。

# 假設(shè)我們只想讀取'A'列和'C'列的前兩行  
df = pd.read_excel('example.xlsx', usecols=['A', 'C']).head(2)

寫入Excel文件(to_excel)

DataFrameto_excel方法用于將DataFrame寫入Excel文件。

語法參數(shù)

  • excel_writer: 文件路徑或ExcelWriter對(duì)象。
  • sheet_name: 字符串,默認(rèn)為'Sheet1'。
  • columns: 要寫入的列名列表。
  • header: 是否寫入列名作為Excel文件的第一行,默認(rèn)為True。
  • index: 是否將行索引寫入Excel文件,默認(rèn)為True。
  • startrow 和 startcol: 左上角單元格的行號(hào)和列號(hào),用于開始寫入,默認(rèn)為0。
  • engine: 用于寫入Excel文件的引擎,默認(rèn)為None(將嘗試使用openpyxlxlsxwriter)。

案例

# 創(chuàng)建一個(gè)簡單的DataFrame  
df = pd.DataFrame({  
    'A': [1, 2, 3, 4],  
    'B': ['foo', 'bar', 'baz', 'qux'],  
    'C': [1.0, 2.1, 3.2, 4.3]  
})  
  
# 寫入Excel文件  
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False, header=True)  
  
# 如果要寫入多個(gè)工作表  
with pd.ExcelWriter('output_multiple_sheets.xlsx') as writer:  
    df.to_excel(writer, sheet_name='Sheet1', index=False)  
    df.to_excel(writer, sheet_name='Sheet2', index=False, startrow=10)  # 從第11行開始寫入

進(jìn)階案例:寫入帶有樣式的Excel

為了寫入帶有樣式的Excel文件,你需要使用ExcelWriterxlsxwriteropenpyxl引擎(取決于你的需求)。

# 使用xlsxwriter引擎寫入帶有樣式的Excel  
with pd.ExcelWriter('styled_output.xlsx', engine='xlsxwriter') as writer:  
    df.to_excel(writer, sheet_name='Sheet1', index=False)  
    workbook = writer.book  
    worksheet = writer.sheets['Sheet1']  
      
    # 創(chuàng)建一個(gè)格式對(duì)象  
    format = workbook.add_format({'bold': True, 'font_color': 'red'})  
      
    # 應(yīng)用格式到特定單元格  
    worksheet.write('A1', 'Styled Cell', format)

注意:xlsxwriter引擎在寫入時(shí)不支持直接修改已存在的DataFrame內(nèi)容(如通過DataFrame.style),它主要用于在寫入時(shí)添加額外的樣式或格式。如果你需要復(fù)雜的樣式處理,可能需要結(jié)合使用pandasopenpyxl(或xlsxwriter)的高級(jí)功能。

openpyxl操作Excel

openpyxl 是一個(gè)用于讀寫 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 庫。它提供了豐富的接口來操作 Excel 文件,包括讀取、修改和寫入數(shù)據(jù),以及設(shè)置樣式等。下面我將詳細(xì)解釋如何使用 openpyxl 操作 Excel,并給出案例代碼和進(jìn)階案例。

安裝 openpyxl

首先,確保你已經(jīng)安裝了 openpyxl。如果還沒有安裝,可以通過 pip 安裝:

pip install openpyxl

基本操作

加載工作簿

使用 openpyxl.load_workbook() 函數(shù)加載一個(gè)現(xiàn)有的 Excel 文件。

from openpyxl import load_workbook  
  
wb = load_workbook(filename='example.xlsx')

激活工作表

通過工作簿對(duì)象獲取工作表。你可以通過工作表名稱或索引來訪問特定的工作表。

# 通過名稱  
ws = wb['Sheet1']  
  
# 或者通過索引(索引從0開始)  
ws = wb.worksheets[0]  
  
# 也可以使用 active 屬性獲取當(dāng)前活動(dòng)的工作表  
ws = wb.active

讀取數(shù)據(jù)

你可以通過單元格的坐標(biāo)來讀取數(shù)據(jù)。

# 讀取單元格的值  
cell_value = ws['A1'].value  
print(cell_value)  
  
# 遍歷行  
for row in ws.iter_rows(values_only=True):  
    print(row)  
  
# 遍歷列  
for col in ws.iter_cols(values_only=True):  
    for value in col:  
        print(value)

寫入數(shù)據(jù)

你可以直接給單元格賦值來寫入數(shù)據(jù)。

# 寫入數(shù)據(jù)  
ws['B2'] = 'Hello, openpyxl!'  
  
# 保存修改  
wb.save('modified_example.xlsx')

語法參數(shù)詳解

由于 openpyxl 的功能非常廣泛,這里只列舉一些常用函數(shù)和方法的參數(shù)。

  • load_workbook(filename, read_only=False, data_only=False, keep_vba=True, ...)
    • filename: Excel 文件路徑。
    • read_only: 是否以只讀模式打開文件。
    • data_only: 是否只讀取單元格的值,忽略公式(默認(rèn)為 False)。
    • keep_vba: 是否保留 VBA 內(nèi)容(默認(rèn)為 True)。
  • Worksheet.iter_rows(min_row=None, max_row=None, min_col=None, max_col=None, values_only=False, ...)
    • min_rowmax_rowmin_colmax_col: 指定迭代的行或列的范圍。
    • values_only: 是否只迭代單元格的值(默認(rèn)為 False,迭代單元格對(duì)象)。
  • Worksheet.iter_cols(...) 與 iter_rows 類似,但用于列迭代。

案例代碼

讀取并修改 Excel

from openpyxl import load_workbook  
  
# 加載工作簿  
wb = load_workbook('example.xlsx')  
  
# 激活工作表  
ws = wb.active  
  
# 讀取單元格數(shù)據(jù)  
print(ws['A1'].value)  
  
# 修改單元格數(shù)據(jù)  
ws['B2'] = 'New Value'  
  
# 保存修改后的工作簿  
wb.save('modified_example.xlsx')

進(jìn)階案例

設(shè)置樣式

from openpyxl import Workbook  
from openpyxl.styles import Font, Color, Alignment, Border, Side  
  
# 創(chuàng)建一個(gè)新的工作簿和工作表  
wb = Workbook()  
ws = wb.active  
  
# 創(chuàng)建一個(gè)字體對(duì)象  
font = Font(name='Calibri', size=11, bold=True, italic=False, vertAlign=None,  
            underline='none', strike=False, color='FF0000')  
  
# 創(chuàng)建一個(gè)對(duì)齊對(duì)象  
alignment = Alignment(horizontal='general', vertical='bottom',  
                      text_rotation=0, wrap_text=False,  
                      shrink_to_fit=False, indent=0)  
  
# 創(chuàng)建一個(gè)邊框?qū)ο? 
thin = Side(border_style="thin", color="000000")  
border = Border(top=thin, left=thin, right=thin, bottom=thin)  
  
# 應(yīng)用樣式到單元格  
ws['A1'].font = font  
ws['A1'].alignment = alignment  
ws['A1'].border = border  
ws['A1'] = 'Styled Cell'  
  
# 保存工作簿  
wb.save('styled_workbook.xlsx')

在進(jìn)階案例中,我們展示了如何創(chuàng)建字體、對(duì)齊和邊框樣式,并將它們應(yīng)用到單元格上。openpyxl 提供了豐富的樣式選項(xiàng),可以滿足大多數(shù) Excel 樣式設(shè)置的需求。

xlrd操作Excel

xlrd 是一個(gè)用于讀取 Excel 文件(主要是 .xls 和 .xlsx 格式,盡管對(duì) .xlsx 的支持可能不如 openpyxl 全面)的 Python 庫。然而,需要注意的是,從版本 2.0.0 開始,xlrd 僅支持 .xls 格式的文件,不再支持 .xlsx。對(duì)于 .xlsx 文件,推薦使用 openpyxl 或 pandas(后者底層可以調(diào)用 openpyxl)。

安裝 xlrd

首先,確保你已經(jīng)安裝了 xlrd。如果還沒有安裝,可以通過 pip 安裝:

pip install xlrd==1.2.0  # 最好選擇一個(gè)支持.xlsx的舊版本

基本操作

加載工作簿

使用 xlrd.open_workbook() 函數(shù)加載 Excel 文件。

import xlrd  
  
# 加載工作簿  
workbook = xlrd.open_workbook('example.xls')

訪問工作表

通過索引或名稱訪問工作表。

# 通過索引訪問(索引從0開始)  
sheet = workbook.sheet_by_index(0)  
  
# 或者通過名稱訪問  
sheet = workbook.sheet_by_name('Sheet1')

讀取數(shù)據(jù)

使用行號(hào)(從0開始)和列號(hào)(也從0開始)或單元格名稱(如 'A1')來讀取數(shù)據(jù)。

# 通過行號(hào)和列號(hào)讀取  
cell_value = sheet.cell_value(0, 0)  # 讀取第一行第一列的數(shù)據(jù)  
print(cell_value)  
  
# 或者使用 cell 方法(返回單元格對(duì)象,然后可以調(diào)用 value 屬性)  
cell = sheet.cell(0, 0)  
print(cell.value)  
  
# 通過單元格名稱讀?。ㄐ枰惭bxlutils或類似庫來轉(zhuǎn)換A1表示法)  
# 注意:xlrd本身不直接支持A1表示法,這里僅作為說明  
# 通常,你會(huì)通過計(jì)算行號(hào)和列號(hào)來訪問單元格

語法參數(shù)詳解

由于 xlrd 的 API 相對(duì)簡單,這里主要關(guān)注 open_workbook() 和 sheet_by_...() 方法的參數(shù)。

  • xlrd.open_workbook(filename=None, ...)
    • filename: Excel 文件路徑。
    • 其他參數(shù)(如 on_demand、formatting_info 等)在較新版本的 xlrd 中可能不再支持或用途有限,特別是針對(duì) .xlsx 文件的處理。
  • workbook.sheet_by_index(sheetx) 和 workbook.sheet_by_name(sheet_name)
    • sheetx: 工作表的索引(整數(shù))。
    • sheet_name: 工作表的名稱(字符串)。

案例代碼

讀取 Excel 文件中的數(shù)據(jù)

import xlrd  
  
# 加載工作簿  
workbook = xlrd.open_workbook('example.xls')  
  
# 通過名稱訪問工作表  
sheet = workbook.sheet_by_name('Sheet1')  
  
# 讀取并打印第一行和第一列的數(shù)據(jù)  
print(sheet.cell_value(0, 0))  
  
# 遍歷所有行和列  
for row_idx in range(sheet.nrows):  
    for col_idx in range(sheet.ncols):  
        print(sheet.cell_value(row_idx, col_idx), end='\t')  
    print()  # 換行

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

相關(guān)文章

  • Python中使用第三方庫xlrd來讀取Excel示例

    Python中使用第三方庫xlrd來讀取Excel示例

    這篇文章主要介紹了Python中使用第三方庫xlrd來讀取Excel示例,本文講解了安裝xlrd、xlrd的API、使用xlrd讀取Excel代碼示例,需要的朋友可以參考下
    2015-04-04
  • Python內(nèi)建模塊collections實(shí)現(xiàn)特殊容器數(shù)據(jù)類型

    Python內(nèi)建模塊collections實(shí)現(xiàn)特殊容器數(shù)據(jù)類型

    collections模塊是Python的內(nèi)建模塊之一,它實(shí)現(xiàn)了特殊的容器數(shù)據(jù)類型,提供了Python內(nèi)建的數(shù)據(jù)類型dict、list、set、和tuple的高效替代選擇
    2023-06-06
  • python語法教程之def()函數(shù)定義及用法

    python語法教程之def()函數(shù)定義及用法

    函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段,下面這篇文章主要給大家介紹了關(guān)于python語法教程之def()函數(shù)定義及用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 使用Python打造高效的PDF文件管理應(yīng)用

    使用Python打造高效的PDF文件管理應(yīng)用

    在日常工作和學(xué)習(xí)中,我們經(jīng)常需要處理大量PDF文件,本文將使用Python的wxPython和PyMuPDF庫,開發(fā)一個(gè)強(qiáng)大且易用的PDF文件管理工具,需要的可以參考下
    2024-12-12
  • Python wxPython創(chuàng)建文件復(fù)制工具

    Python wxPython創(chuàng)建文件復(fù)制工具

    wxPython是一個(gè)功能強(qiáng)大的 GUI 框架,它允許開發(fā)者通過 Python 輕松構(gòu)建跨平臺(tái)的桌面應(yīng)用,本文將使用wxPython創(chuàng)建一個(gè)文件復(fù)制工具,感興趣的可以了解下
    2025-02-02
  • 如何使用Python實(shí)現(xiàn)數(shù)據(jù)透視表、音頻文件格式轉(zhuǎn)換

    如何使用Python實(shí)現(xiàn)數(shù)據(jù)透視表、音頻文件格式轉(zhuǎn)換

    這篇文章主要介紹了用Python實(shí)現(xiàn)數(shù)據(jù)透視表、音頻文件格式轉(zhuǎn)換,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 創(chuàng)建Python Docker鏡像的詳細(xì)步驟

    創(chuàng)建Python Docker鏡像的詳細(xì)步驟

    Python和Docker是兩個(gè)極其流行的技術(shù),結(jié)合它們可以創(chuàng)建強(qiáng)大的應(yīng)用程序,Docker允許將應(yīng)用程序及其依賴項(xiàng)打包到一個(gè)獨(dú)立的容器中,而Python則提供了豐富的庫和工具來開發(fā)應(yīng)用程序,本文將提供如何創(chuàng)建Python Docker鏡像的全面指南,,需要的朋友可以參考下
    2023-12-12
  • 解決python 上傳圖片限制格式問題

    解決python 上傳圖片限制格式問題

    這篇文章主要介紹了python 上傳圖片限制格式問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 基于python實(shí)現(xiàn)分析識(shí)別文章/內(nèi)容中的高頻詞和關(guān)鍵詞

    基于python實(shí)現(xiàn)分析識(shí)別文章/內(nèi)容中的高頻詞和關(guān)鍵詞

    要分析一篇文章的高頻詞和關(guān)鍵詞,可以使用 Python 中的 nltk 庫和 collections 庫或者jieba庫來實(shí)現(xiàn),本篇文章介紹基于兩種庫分別實(shí)現(xiàn)分析內(nèi)容中的高頻詞和關(guān)鍵詞,需要的朋友可以參考下
    2023-09-09
  • 替換python字典中的key值方法

    替換python字典中的key值方法

    今天小編就為大家分享一篇替換python字典中的key值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評(píng)論