最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

三大Python操作Excel文件擴(kuò)展庫的使用指南

 更新時間:2025年07月24日 16:00:34   作者:E-iceblue  
在當(dāng)今數(shù)據(jù)驅(qū)動的工作環(huán)境中,Excel 文件操作已成為 Python 開發(fā)者必備的核心技能之一,本文將深入解析三個優(yōu)秀的 Python Excel 庫:openpyxl、pandas 和 Free Spire.XLS for Python,希望對大家有所幫助

在當(dāng)今數(shù)據(jù)驅(qū)動的工作環(huán)境中,Excel 文件操作已成為 Python 開發(fā)者必備的核心技能之一。本文將深入解析三個優(yōu)秀的 Python Excel 庫:openpyxl、pandas 和 Free Spire.XLS for Python,幫助您根據(jù)具體需求選擇最佳工具,實現(xiàn)高效 Excel 自動化處理

一、核心工具庫對比與選擇指南

需求場景推薦庫(&補(bǔ)充庫)核心優(yōu)勢最佳適用場景
精細(xì)單元格操作openpyxl單元格級控制、公式圖表支持報表模板生成、格式定制
批量數(shù)據(jù)處理pandas簡潔API、高效數(shù)據(jù)清洗分析大數(shù)據(jù)分析、數(shù)據(jù)清洗轉(zhuǎn)換
企業(yè)級解決方案Free Spire.XLS for Python全格式支持、 PDF 導(dǎo)出、跨平臺企業(yè)系統(tǒng)集成、格式轉(zhuǎn)換需求
Excel交互xlwings支持VBA交互自動化操作、數(shù)據(jù)分析和報表生成
高效生成xlsxxlsxwriter純寫入、極致格式化、輕量級生成復(fù)雜的報表和圖表

注:鑒于篇幅有限,本文重點(diǎn)介紹前三個庫

二、環(huán)境安裝與配置

安裝三大核心庫

pip install openpyxl pandas
pip install free spire.xls

注意:Free Spire.XLS for Python 僅用于學(xué)習(xí)和測試,企業(yè)應(yīng)用需購買授權(quán)

三、openpyxl:專業(yè) Excel 精細(xì)控制

核心優(yōu)勢與應(yīng)用場景

  • 專業(yè) .xlsx操作:原生支持最新 Excel 格式
  • 級功能支持:完整控制公式、圖表、條件格式
  • 最佳場景:財務(wù)報告、格式化模板、帶公式的工作表

創(chuàng)建專業(yè) Excel 報表

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill
from openpyxl.formatting.rule import ColorScaleRule

# 創(chuàng)建帶格式的工作簿
wb = Workbook()
ws = wb.active
ws.title = "銷售分析"

# 添加標(biāo)題行(帶樣式)
header_font = Font(bold=True, color="FFFFFF")
header_fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")
ws.append(["產(chǎn)品", "季度", "銷售額", "增長率"])
for cell in ws[1]:
    cell.font = header_font
    cell.fill = header_fill

# 添加示例數(shù)據(jù)
sales_data = [
    ["手機(jī)", "Q1", 1500, 0.15],
    ["手機(jī)", "Q2", 2100, 0.40],
    ["筆記本", "Q1", 800, -0.05],
    ["筆記本", "Q2", 1200, 0.50]
]
for row in sales_data:
    ws.append(row)

# 添加條件格式
color_scale = ColorScaleRule(start_type='min', start_color='FF0000',
                            end_type='max', end_color='00FF00')
ws.conditional_formatting.add("D2:D5", color_scale)

# 保存專業(yè)報表
wb.save("sales_analysis.xlsx")

圖表嵌入技術(shù)要點(diǎn)

  • 引擎選擇:必須使用 xlsxwriter 引擎(pip install xlsxwriter
  • 數(shù)據(jù)引用:使用 Excel 公式語法(如 =數(shù)據(jù)透視表!$B$2:$F$2)動態(tài)引用數(shù)據(jù)范圍
  • 圖表類型:支持 25+ 種圖表類型(柱狀圖/折線圖/餅圖等)
  • 樣式定制:可調(diào)整顏色/字體/3D效果等 50+ 種樣式參數(shù)

注:復(fù)雜圖表建議結(jié)合 openpyxl 的 BarChart3D 等高級類實現(xiàn)

四、pandas:Excel 數(shù)據(jù)批處理專家

核心優(yōu)勢與應(yīng)用場景

  • 數(shù)據(jù)處理效率:秒級處理百萬行數(shù)據(jù)
  • 簡潔APIread_excel()和 to_excel()快速接口
  • 最佳場景:大數(shù)據(jù)清洗、分析、多表合并

多表數(shù)據(jù)處理與圖表嵌入實戰(zhàn)

import pandas as pd
import numpy as np

# 創(chuàng)建示例數(shù)據(jù)集
data = {
    '產(chǎn)品': ['手機(jī)', '筆記本', '平板', '耳機(jī)'] * 5,
    '月份': np.repeat(['1月', '2月', '3月', '4月', '5月'], 4),
    '銷售額': np.random.randint(1000, 5000, 20),
    '成本': np.random.randint(500, 3000, 20)
}
df = pd.DataFrame(data)

# 添加計算列(類似Excel公式)
df['利潤率'] = (df['銷售額'] - df['成本']) / df['銷售額']

# 創(chuàng)建數(shù)據(jù)透視表
pivot = pd.pivot_table(df, 
                       values='銷售額',
                       index='產(chǎn)品',
                       columns='月份',
                       aggfunc='sum',
                       margins=True,
                       margins_name='總計')

# 多表輸出到Excel
with pd.ExcelWriter('sales_report.xlsx') as writer:
    df.to_excel(writer, sheet_name='原始數(shù)據(jù)', index=False)
    pivot.to_excel(writer, sheet_name='數(shù)據(jù)透視表')
    
with pd.ExcelWriter('sales_report.xlsx', engine='xlsxwriter') as writer:
    # 寫入數(shù)據(jù)
    df.to_excel(writer, sheet_name='原始數(shù)據(jù)', index=False)
    pivot.to_excel(writer, sheet_name='數(shù)據(jù)透視表')
    
    # 獲取工作簿和工作表對象
    workbook = writer.book
    worksheet = writer.sheets['數(shù)據(jù)透視表']
    
    # 創(chuàng)建柱狀圖 (需安裝 xlsxwriter)
    chart = workbook.add_chart({'type': 'column'})
    
    # 動態(tài)獲取數(shù)據(jù)范圍 (B2:F6 為示例范圍)
    chart.add_series({
        'name': '銷售額',
        'categories': '=數(shù)據(jù)透視表!$B$2:$F$2',  # 月份數(shù)據(jù)
        'values': '=數(shù)據(jù)透視表!$B$3:$F$6',     # 產(chǎn)品銷售額
        'gap': 150  # 柱間距
    })
    
    # 設(shè)置圖表樣式
    chart.set_title({'name': '產(chǎn)品月度銷售額分布'})
    chart.set_x_axis({'name': '月份'})
    chart.set_y_axis({'name': '銷售額 (萬元)'})
    
    # 嵌入圖表到指定位置
    worksheet.insert_chart('H2', chart)

五、Free Spire.XLS for Python:免費(fèi)的企業(yè)級 Excel 解決方案

核心優(yōu)勢與應(yīng)用場景

  • 全格式支持:完美兼容 .xls、.xlsx、.xlsb 等格式
  • 無依賴運(yùn)行:無需安裝 Microsoft Excel
  • 費(fèi)版功能:PDF 導(dǎo)出、郵件合并、批量格式轉(zhuǎn)換(免費(fèi)版有功能限制)
  • 跨平臺:支持 Windows/Linux/macOS/國產(chǎn)系統(tǒng)

企業(yè)級應(yīng)用實戰(zhàn)

import os
from spire.xls import Workbook, FileFormat, DateTime


def process_financial_report(template_path: str, output_excel_path: str,
                             generate_pdf: bool) -> None:
    """
    使用 Free Spire.XLS for Python 處理財務(wù)報告模板
    填充數(shù)據(jù)并導(dǎo)出為Excel和PDF格式
    
    參數(shù):
        template_path: 財務(wù)報告模板的完整路徑
        output_excel_path: 生成的Excel報告的保存路徑
        generate_pdf: 是否額外生成PDF報告
        
    流程:
        1. 加載Excel模板
        2. 填充報告標(biāo)題和時間戳
        3. 填充季度財務(wù)數(shù)據(jù)
        4. 保存Excel報告
        5. 可選生成PDF報告
    """
    workbook = Workbook()
    try:
        # 加載模板
        workbook.LoadFromFile(template_path)
        # 使用第一個工作表
        worksheet = workbook.Worksheets[0]

        # 設(shè)置報告標(biāo)題
        worksheet.Range["B2"].Text = "2023年度財務(wù)報告"

        # 設(shè)置當(dāng)前日期
        worksheet.Range["C5"].DateTimeValue = DateTime.get_Now()

        # 準(zhǔn)備數(shù)據(jù)
        quarterly_data = [["Q1", 1500000, 1200000, 300000],
                          ["Q2", 1650000, 1250000, 400000],
                          ["Q3", 1820000, 1350000, 470000],
                          ["Q4", 2100000, 1450000, 650000]]

        # 數(shù)據(jù)列對應(yīng)的列標(biāo)識
        data_columns = ["A", "B", "C", "D"]

        # 數(shù)據(jù)起始行(第7行開始)
        START_ROW = 7

        for row_index, quarter_row in enumerate(quarterly_data):
            # 計算當(dāng)前數(shù)據(jù)行的行號
            excel_row = START_ROW + row_index

            for col_index, cell_value in enumerate(quarter_row):
                # 獲取當(dāng)前單元格地址
                cell_address = f"{data_columns[col_index]}{excel_row}"

                # 根據(jù)數(shù)據(jù)類型設(shè)置單元格值
                if isinstance(cell_value, str):
                    worksheet.Range[cell_address].Text = cell_value
                else:
                    worksheet.Range[cell_address].NumberValue = cell_value

        # 保存Excel報告
        workbook.SaveToFile(output_excel_path, FileFormat.Version2016)

        # 可選生成PDF報告
        if generate_pdf:
            # 替換擴(kuò)展名
            root, _ = os.path.splitext(output_excel_path)
            pdf_output_path = root + ".pdf"

            workbook.SaveToFile(pdf_output_path, FileFormat.PDF)
            print(f"PDF報告已生成: {pdf_output_path}")

    except Exception as e:
        print(f"報告生成失敗: {str(e)}")
        # 實際項目中應(yīng)記錄詳細(xì)錯誤日志
        # 可考慮重新拋出異?;蚍祷劐e誤狀態(tài)碼

    finally:
        # 確保釋放工作簿資源
        workbook.Dispose()
        print("工作簿資源已釋放")


# 使用示例
if __name__ == "__main__":
    # 路徑配置(實際使用中建議從配置文件讀?。?
    TEMPLATE_PATH = "財務(wù)模版.xlsx"
    OUTPUT_PATH = "2023財務(wù)報告.xlsx"

    process_financial_report(template_path=TEMPLATE_PATH,
                             output_excel_path=OUTPUT_PATH,
                             generate_pdf=True)

六、性能優(yōu)化與最佳實踐

大數(shù)據(jù)處理技巧

# CSV中轉(zhuǎn)
pd.read_excel("large_dataset.xlsx").to_csv("temp.csv", index=False)

# 分塊處理文件
chunk_size = 10000
csv_chunks = pd.read_csv("temp.csv", chunksize=chunk_size)

with pd.ExcelWriter("processed_data.xlsx", engine='openpyxl') as writer:
    for i, chunk in tqdm(enumerate(csv_chunks), desc="Processing"):
        processed = transform_data(chunk)
        # 安全寫入策略
        if i >= 200:  # 預(yù)留55個sheet給其他數(shù)據(jù)
            # 合并到主表
            start_row = 0 if i == 0 else writer.sheets['Main'].max_row
            processed.to_excel(writer, sheet_name='Main', startrow=start_row, index=False, header=(i==0))
        else:
            processed.to_excel(writer, sheet_name=f"Part_{i+1}", index=False)

跨平臺兼容方案

  • Linux環(huán)境:使用 Free Spire.XLS for Python 替代需 Windows 依賴的庫
  • Office環(huán)境:Free Spire.XLS for Python 無需安裝 Excel 即可操作
  • 產(chǎn)系統(tǒng)支持:Free Spire.XLS for Python 兼容中標(biāo)麒麟、中科方德等系統(tǒng)

注:如需 .xls格式支持或 PDF轉(zhuǎn)換,可考慮 Free Spire.XLS for Python等商業(yè)庫的免費(fèi)版,但需注意功能限制。開源方案可嘗試 odfpy(ODS格式)或 LibreOffice轉(zhuǎn)換工具。

七、總結(jié):選擇適合你的Excel工具

功能維度openpyxlpandasFree Spire.XLS for Python
格式支持★★★☆★★★☆★★★★★
單元格控制★★★★★★★☆★★★★☆
大數(shù)據(jù)處理★★☆★★★★★★★★★☆
圖表/公式★★★★☆★★★★★
格式轉(zhuǎn)換★★★★★
學(xué)習(xí)曲線★★★☆★★★★☆★★★☆

綜合評分

1.openpyxl(★★★★☆)

  • 優(yōu)點(diǎn):強(qiáng)大的單元格級控制能力,支持高級格式化和圖表
  • 缺點(diǎn):大數(shù)據(jù)處理能力有限,不支持舊版.xls格式
  • 適合需要精細(xì)控制Excel格式的場景

2.pandas(★★★★☆)

  • 優(yōu)點(diǎn):卓越的數(shù)據(jù)處理性能,簡潔的API接口
  • 缺點(diǎn):對于 Excel 圖表和格式的控制能力較弱
  • 適合數(shù)據(jù)分析和批處理任務(wù)

3.Free Spire.XLS for Python (★★★★☆)

  • 優(yōu)點(diǎn):全面的格式支持,強(qiáng)大的轉(zhuǎn)換能力,跨平臺兼容性
  • 缺點(diǎn):免費(fèi)版功能受限,學(xué)習(xí)曲線中等
  • 適合企業(yè)級應(yīng)用和格式轉(zhuǎn)換需求

項目選型建議

  • 數(shù)據(jù)分析團(tuán)隊 → pandas 快速處理數(shù)據(jù)
  • 財務(wù)部門 → openpyxl 創(chuàng)建精美報表
  • IT統(tǒng)集成 → Free Spire.XLS for Python 實現(xiàn)自動化工作流(注意免費(fèi)版限制)

通過自動化 Excel 處理流程,典型數(shù)據(jù)清洗任務(wù)耗時從小時級降至分鐘級。立即行動:選擇適合您項目的庫,開始自動化 Excel 處理流程。

以上就是三大Python操作Excel文件擴(kuò)展庫的使用指南的詳細(xì)內(nèi)容,更多關(guān)于Python操作Excel的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pandas與pyspark計算效率對比分析

    pandas與pyspark計算效率對比分析

    這篇文章主要介紹了pandas與pyspark計算效率對比,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • pandas將DataFrame的幾列數(shù)據(jù)合并成為一列

    pandas將DataFrame的幾列數(shù)據(jù)合并成為一列

    本文主要介紹了pandas將DataFrame的幾列數(shù)據(jù)合并成為一列,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python正則表達(dá)式修復(fù)網(wǎng)站文章字體不統(tǒng)一的解決方法

    python正則表達(dá)式修復(fù)網(wǎng)站文章字體不統(tǒng)一的解決方法

    python正則表達(dá)式修復(fù)網(wǎng)站文章字體不統(tǒng)一的解決方法,需要的朋友可以參考一下
    2013-02-02
  • Python selenium模塊實現(xiàn)定位過程解析

    Python selenium模塊實現(xiàn)定位過程解析

    這篇文章主要介紹了python selenium模塊實現(xiàn)定位過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Python+pyplot繪制帶文本標(biāo)注的柱狀圖方法

    Python+pyplot繪制帶文本標(biāo)注的柱狀圖方法

    今天小編就為大家分享一篇Python+pyplot繪制帶文本標(biāo)注的柱狀圖方法,具有很好的價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python 列表排序方法reverse、sort、sorted詳解

    Python 列表排序方法reverse、sort、sorted詳解

    本文給大家介紹的是Python中列表排序方法中的reverse、sort、sorted操作方法,以及他們直接的區(qū)別介紹,有需要的小伙伴可以參考下。
    2016-01-01
  • Django中使用django-redis庫與Redis交互API指南

    Django中使用django-redis庫與Redis交互API指南

    這篇文章主要介紹了Django緩存與原生Redis的區(qū)別,以及如何在Django中使用Redis的各種數(shù)據(jù)類型進(jìn)行緩存,文章還提供了一些實戰(zhàn)場景和性能優(yōu)化技巧,幫助開發(fā)者充分利用Redis的強(qiáng)大功能來構(gòu)建高性能的應(yīng)用,需要的朋友可以參考下
    2025-12-12
  • Pycharm2017版本設(shè)置啟動時默認(rèn)自動打開項目的方法

    Pycharm2017版本設(shè)置啟動時默認(rèn)自動打開項目的方法

    今天小編就為大家分享一篇Pycharm2017版本設(shè)置啟動時默認(rèn)自動打開項目的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python2/3中urllib庫的一些常見用法

    Python2/3中urllib庫的一些常見用法

    Urllib庫是Python中的一個功能強(qiáng)大、用于操作URL,并在做爬蟲的時候經(jīng)常要用到的庫。下面這篇文章主要給大家介紹了關(guān)于Python2/3中urllib庫的一些常見用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • 詳解Python中的普通函數(shù)和高階函數(shù)

    詳解Python中的普通函數(shù)和高階函數(shù)

    這篇文章主要為大家介紹了Python中的普通函數(shù)和高階函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評論

科技| 汉川市| 建宁县| 邛崃市| 长武县| 丰顺县| 内乡县| 大洼县| 兴仁县| 渭源县| 永兴县| 阿巴嘎旗| 安阳县| 尚志市| 万安县| 防城港市| 大同市| 临泉县| 安阳县| 鄱阳县| 天门市| 渭南市| 绥江县| 沐川县| 泰安市| 绵竹市| 英山县| 兴城市| 霍林郭勒市| 苏尼特左旗| 昭通市| 乐陵市| 鄱阳县| 邵武市| 高碑店市| 张北县| 霍城县| 宝鸡市| 通江县| 炎陵县| 九台市|