Python利用openpyxl處理Excel文件(公式實例)

2020-12-11 python高手養成

前面我們學習了Python使用openpyxl模塊處理Excel文件的大部分內容,今天,我們通過一個例子來學習Python使用Excel公式的方法,引出今天的主題利用openpyxl處理Excel公式。

一、使用openpyxl模塊處理Excel公式的方法

先構造一個應用Excel文件

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl import load_workbook

wb = load_workbook('example.xlsx')

ws=wb.active

ws["A1"]=1000

ws["A2"]=2000

ws["A3"]=3000

直接將公式內容寫入響應的Cell實例(單元格)中即可,為單元格設置公式就像設置其他文本值一樣。

ws["A4"] = "=SUM(1, 1)"

ws["A5"] = "=SUM(A1:A4)"

print(ws["A4"].value) # 默認只列印公式內容,不列印結果

print(ws["A5"].value) # 同上

# 保存文件

wb.save("example.xlsx")

Excel單元格中插入公式
插入公式後列印單元格內容

打開Excel表格後顯示效果(默認不設置任何參數的時候顯示公式計算後的數值),如下圖所示。

默認情況下Excel顯示效果

如果你希望看到該公式的計算結果,而不是原來的公式,就必須將load_workbook()的data_only關鍵字參數設置為True。這意味著Workbook對象要麼顯示公式,要麼顯示公式的結果,不能兼得(但是針對一個電子表格文件,可以加載多個Workbook對象)。

在交互式環境中輸入以下代碼,看看有無data_only關鍵字參數時,加載工作簿的區別。

(一)使用data_only參數

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl import load_workbook

wb = load_workbook('example.xlsx', data_only=True)

ws=wb.active

print(ws[『A4』].value)

print(ws[『A5』].value)

data_only為True時列印效果

在這裡必須說明的是,當使用data_only=True時,雖然你能看到公式及顯示的結果,除非你再次將Excel打開並保存一下,否則,公式是不會應用到Excel表格中,雖然你執行了wb.save(『example.xlsx』)操作。這是和不設置參數是不一樣的。

(二)使用data_only參數

# -*- coding: utf-8 -*-

from openpyxl import Workbook

from openpyxl import load_workbook

wb = load_workbook('example.xlsx')

ws=wb.active

print(ws[『A4』].value)

print(ws[『A5』].value)

默認不設置data_only時的效果

上面演示了data_only參數設置效果,當data_only=True請牢記上面的「坑」。

二、實例演示

我們以前面的「population.xlsx」為原始表格,統計「20XX年X國人口統計」表格的人口總數。將統計結果放在「人口數量」列的最後一行,並將該行前三個單元格進行合併(樣式自己定義哦)。

不贅述直接上代碼

import openpyxl

wb = openpyxl.load_workbook("population.xlsx")

ws = wb.get_sheet_by_name(wb.get_sheet_names()[0])

row = ws.max_row

ws.merge_cells("A{0}:C{0}".format(row + 1))

ws['A{0}'.format(row+1)].value = "總計"

ws.cell(row = row + 1, column = 4).value = "=SUM(D3:D{0})".format(row)

# 保存

wb.save("population.xlsx")

程序運行效果圖

三、實例分析

Excel公式賦予電子表格一定程度的編程能力,但對於複雜的任務,很快就會失去控制。例如,即使你非常熟悉Excel的公式,要想弄清楚=IFERROR(TRIM(IF(LEN(VLOOKUP(F7,Sheet3!$C$1:$D$10000,2,FALSE))>0,SUBSTITUTE(VLOOKUP(F8, Sheet2!$B$3:$A$30000, 1, FALSE), " ", ""),"")), "")實際上做了什麼,也是一件非常頭痛的事。Python代碼的可讀性要好得多。因此,利用Python對打開的數據對象進行複雜的條件判斷,這個過程中使用的是Python語法,而非公式,這樣可以大大提高代碼的可讀性和處理具體問題的效率。上面的例子只是簡單的對求和公式進行了例舉,這個例子只起了個拋磚引玉的效果,如果涉及更多複雜的條件篩選單元格,使用Python進行處理是不錯的選擇,我們將在以後的梳理過程中逐漸增加這部分內容。對於Excel函數不怎麼感冒的同學,可以試試使用Python進行處理。

可愛的python

未完待續!

相關焦點

  • Python利用openpyxl處理excel文件(openpyxl的安裝及簡介)
    $B$3:$A$30000, 1, FALSE), " ", ""),"")), ""),我相信大多數人要想理解這個公式,是很需要一段時間的,面對這種繁雜的公式,一般人肯定是力不從心的。但是試想,如果把上述excel公式變成諸如python中的if-else結構,其可讀性肯定是不容置疑的……今天,我們來介紹一款excel處理利器—openpyxl(python庫文件)。
  • Python利用openpyxl處理Excel文件(實戰項目—人口統計)
    之前,學習了兩章關於openpyxl的基礎知識,通過這些還不能了解openpyxl的強大作用。今天,帶領大家通過一個實戰項目認識openpyxl的強大之處,項目來自《Python編程快速上手—讓繁瑣工作自動化》一書,並對書中的例子進行了些許改動和擴充,本文旨在提供一種通過openpyxl處理大量Excel數據並進行數據統計的方法。
  • Python利用openpyxl處理Excel文件(單元格樣式設置)
    前面幾個章節,簡單介紹了openpyxl模塊及使用該模塊對Excel文件進行簡單操作,並通過一個實戰項目(人口數據統計)展示了使用openpyxl模塊處理Excel文件的優勢。今天,我們主要梳理通過openpyxl如何對Excel文件的單元格樣式進行編輯。
  • Python利用openpyxl處理Excel文件(Excel文件基本操作)
    上一篇,我們簡要介紹了openpyxl及其安裝過程,這一篇我們學習使用openpyxl處理Excel的具體過程,力爭涵蓋大多數官方文檔中相關內容,對這一知識點進行簡單的匯總。一、學習目標(一)openpyxl的具體使用。
  • Python利用openpyxl處理Excel文件(單元格及行列具體操作)
    通過實戰項目演示,進一步加深了印象,整個過程我們不難發現,對於使用openpyxl操作Excel文件,行列遍歷及單元格的定位操作是整個過程的重要技巧和先決條件,因此,這節我們著重講解openpyxl對於單元格及行列遍歷的具體操作。
  • python生成excel文件的三種方式
    來源:經授權轉自 AI碼科技(ID:eleven_bmw)作者 :臭榴槤在我們做平常工作中都會遇到操作excel,那麼今天寫一篇,如何通過python操作excel當然python操作excel的庫有很多,比如pandas,xlwt/xlrd,openpyxl等,每個庫都有不同的區別,具體的區別,大家一起來看看吧~xlrd是對於Excel進行讀取,xlrd 操作的是
  • 詳解Python操作Excel文件
    前言本篇文章主要總結了一下利用python操作Excel文件的第三方庫和方法。常見庫簡介1.xlrdxlrd是一個從Excel文件讀取數據和格式化信息的庫,支持.xls以及.xlsx文件。地址:http://docs.xlwings.org/en/stable/index.html4、強大的轉換器可以處理大部分數據類型,包括在兩個方向上的numpy array和pandas DataFrame。5.openpyxlopenpyxl是一個用於讀取和編寫Excel 2010 xlsx/xlsm/xltx/xltm文件的庫。
  • 14-用Python 讀寫 Excel 文件
    XLS 或 XLSX 文件要生成 XLS 文件需要的功能不太複雜需要跨平臺要處理 XLSX 文件需要修改已有文件,或者在寫入過程中需要不斷修改需要的功能比較複雜數據量可能會很大需要跨平臺需要處理各種文件格式需要用到特別複雜的功能在修改文件時,不希望對原有信息造成任何意外破壞數據量很小,或者願意等待僅在 Windows
  • 如何用Python中的openpyxl操作Excel?
    3.workbook使用openpyxl無需在文件系統上創建文件,只需導入 Workbook 類並開始使用。5.從文件中導入像寫一樣我們可以導入openpyxl.load_workbook()已經存在的workbook:>>> from openpyxl import
  • Python處理excel的強大工具-openpyxl
    的操作,下面簡單介紹下,如何使用Python的openpyxl庫處理excel文檔。首先,Python處理excel的第三方庫有:xlrd,xlwt,openpyxl等。其中xlrd只能讀excel,xlwt只能寫excel,所以今天我們就重點了解一下openpyxl,它既可以讀寫數據,還能操作工作表,比如生成柱狀圖等。
  • 利用pandas讀取格式不規範的Excel文件
    介紹pandas 很容易將Excel文件讀取為DataFrame,但是在現實中,Excel文件裡面的數據格式往往是不規範的
  • Python 實現批量分類匯總並保存xlsx文件
    上一篇文件用VBA介紹了如何實現一鍵按列分類匯總並保存單獨文件,代碼有幾十行,而且一旦數據量多了,效果可能不盡如人意。
  • 【他山之石】Python和Excel終於可以互通了,自動化辦公實操寶典速來下載!
    前言今天分享我的一位同事在學習了Huang Supreme寫的《Python自動化辦公寶典》之後,如何使用Python快速處理日常工作中的Excel數據表格。本文將以詳細圖表/代碼的形式講解如何對Excel進行讀取、寫入及樣式調整,基本還涵蓋了我們常用的Excel處理數據的方法。
  • 氣象編程 | 使用python操作Excel文件
    python操作Excel的庫有很多,大概有xlrd、xlwt、openpyxl、XlsxWriter、xlutils、pandas等。這些庫的操作對xls和xlsx的支持不同,有個只可以操作xls,有的只可以進行讀操作。我選用的庫是openpyxl,支持對xlsx的讀寫操作。
  • Python之unittest+ddt+openpyxl綜合
    前面寫過python之unittest初探和python之unittest+ddt兩篇文章。(往期公眾號文章)在之前的文章中,寫過可以再次優化。今天寫第三篇的目的,就是在原有基礎上,基於openpyxl模塊再次優化。在第二篇中,注意到測試數據與代碼寫在一起,實在是難以維護操作。
  • 用Python讀取Excel文件指南
    原作者丨Erik Marsja本文將重點闡述用Python如何讀取Excel文件(xlsx),重點是演示使用openpyxl模塊讀取xlsx類型的文件。首先,我們要看一些簡單的示例;然後,我們將學習讀取多個Excel文件。
  • Python 數據處理(十九)—— Excel
    Python 數據處理(十九)Excel 文件read_excel() 方法可以使用 openpyxl 模塊讀取 Excel 2007+(.xlsx)文件可以使用 xlrd 讀取 Excel 2003(.xls)文件。
  • 實戰代碼 | Python自動化辦公 - 對Excel表格的操作(openpyxl的基本使用)
    環境,在pycharm裡安裝相應的第三方文件庫,黏貼代碼即可運行,我會儘量在代碼後面都進行標註解讀。需要python教學視頻和資料的在公眾號菜單欄獲取,有任何問題歡迎公眾號後臺聯繫我或加我微信。python安裝教程註:import後導入的模塊需要單獨安裝,有些是自帶的,但是要實現更複雜的功能一般是安裝第三方模塊。安裝方法:1.win+r,調出命令提示窗口,輸入cmd再按回車鍵。
  • Python「文件操作」Excel篇(上)
    大家好,我們今天來一起探索一下用Python怎麼操作Excel文件。與word文件的操作庫python-docx類似,Python也有專門的庫為Excel文件的操作提供支持,這些庫包括xlrd、xlwt、xlutils、openpyxl、xlsxwriter幾種,其中我最喜歡用的是openpyxl,這也是本次講解的主要內容。Excel文件大家也不陌生了,平時辦公、學習中都會用到,大家回憶一下,你操作一個Excel文件是什麼步驟呢?
  • python操作excel:批量生成超連結
    excel設置超連結的函數是HYPERLINK,這裡用python批量生成超連結的思想其實很簡單,就是將公式寫入excel就行。