Python處理excel的強大工具-openpyxl

2021-02-13 吾非同


Python實現自動化辦公、自動化測試數據驅動,都離不開對excel的操作,下面簡單介紹下,如何使用Python的openpyxl庫處理excel文檔。

首先,Python處理excel的第三方庫有:xlrd,xlwt,openpyxl等。

其中xlrd只能讀excel,xlwt只能寫excel,所以今天我們就重點了解一下openpyxl,它既可以讀寫數據,還能操作工作表,比如生成柱狀圖等。

安裝openpyxl

pip install openpyxl

當然,也可以用國內鏡像安裝:

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

Excel基本概念

•工作簿(workbook):一個 Excel 文檔;•工作表(sheet):一個工作簿可以包含多個表, 如:sheet1, sheet2等;•列(column): 列地址是從 A 開始的;•行(row): 行地址是從 1 開始的;•單元格(cell):指定行和列的格;

Excel操作

Excel不管讀寫都是「三板斧」:加載workbook,打開sheet,操作cell

現有工作簿「學生表.xlsx」如下圖:

1.首先導入模塊:
from openpyxl import load_workbook

2.加載工作簿:可以使用相對路徑也可使用絕對路徑
wb = load_workbook("學生表.xlsx")wb = load_workbook("D:\Python_exercises\學生表.xlsx")

3.打開工作表

加載工作簿後,我們要打開一個工作表:

#打開工作表兩種方式:#方式一:通過工作表名稱打開工作表sheet=wb["sheet1"]#方式二:獲取活躍的工作表sheet=wb.active    #['sheet1']

順帶介紹一下工作表的其他操作:

#獲取所有的工作表wb.sheetnames    #['sheet1']#修改工作表名稱sheet.title="students"    #獲取工作表名稱sheet.title    #students

4.單元格常用操作

加載工作簿,打開工作表後就可以操作單元格了,以下是對單元格操作的介紹:

獲取單元格(指定行,指定列)

sheet.cell(2,3)    #<Cell 'students'.C2>sheet["C2"]    #<Cell 'students'.C2>

如果要獲取單元格的值,使用value屬性:

#方式一sheet.cell(2,3).value    #60#方式二sheet["C2"].value    #60

往單元格(指定行,指定列)中寫入值

#方式一sheet.cell(2,4).value="及格"#方式二sheet["D3"]="及格"#方式三sheet.cell(4,4,"良好")#保存工作簿wb.save("學生表.xlsx")


獲取工作表的最大行和最大列

#獲取最大行:sheet.max_row    #8#獲取最大列:sheet.max_column    #4

獲取多個單元格

方法一:切片方法,結果為一個元組cell1=sheet['A1:A3']cell2=sheet[1:2]cell3=sheet['A:C']

方法二:iter_rows 和 iter_cols 方法,此方法得到的是一個可迭代序列cell4=sheet.iter_rows(min_row=1, max_row=2, min_col=1, max_col=4)for cell in cell4:    print(cell)cell4=sheet.iter_rows(min_row=1, max_row=2, min_col=1, max_col=4,values_only=True)cell5=sheet.iter_cols(min_col=1, max_col=4,min_row=1, max_row=2)for cell in cell5:    print(cell)cell5=sheet.iter_cols(min_col=1, max_col=4,min_row=1, max_row=2,values_only=True)

5.插入/刪除行、列
#插入行sheet.insert_rows(idx=數字編號,amount=要插入行數)#刪除行sheet.delete_rows(idx=數字編號,amount=要插入行數)

#從第二行開始插入三行sheet.insert_rows(idx=2,amount=3)

#第2行開始刪除3行sheet.delete_rows(idx=2,amount=3)#插入列sheet.insert_cols(idx=數字編號,amount=要插入列數)#刪除列sheet.delete_cols(idx=數字編號,amount=要插入列數)

生成折線圖和柱狀圖

現有Excel文檔「銷售數據.xlsx",表中數據內容如下:

現在我們在excel中生成折線圖,結果如下:

我們還可以生成柱狀圖

代碼如下:

from openpyxl import load_workbookfrom openpyxl.chart import LineChart,Referencewb=load_workbook("銷售數據.xlsx")sheet=wb.activechart=LineChart()chart.title="手機銷售數據統計"chart.y_axis.title="銷量(單位:萬臺)"chart.x_axis.title="季度"data=Reference(worksheet=sheet,min_row=2,max_row=4,min_col=1,max_col=5)categories=Reference(sheet,min_col=2,min_row=1,max_col=5,max_row=1)chart.add_data(data,from_rows=True,titles_from_data=True)chart.set_categories(categories)sheet.add_chart(chart,"B6")wb.save("銷售數據.xlsx")

from openpyxl import load_workbookfrom openpyxl.chart import BarChart,Referencewb=load_workbook("銷售數據.xlsx")sheet=wb.activebc=BarChart()bc.title="手機銷售數據統計"bc.y_axis.title="銷量(單位:萬臺)"bc.x_axis.title="季度"bc_data=Reference(worksheet=sheet,min_row=2,max_row=4,min_col=1,max_col=5)bc_cat=Reference(sheet,min_col=2,min_row=1,max_col=5,max_row=1)bc.add_data(bc_data,from_rows=True,titles_from_data=True)bc.set_categories(bc_cat)sheet.add_chart(bc,"B6")wb.save("銷售數據.xlsx")

關於更多openpyxl庫的用法大家可以百度,或者去官方文檔中學習:

https://openpyxl.readthedocs.io/en/stable/

相關焦點

  • Python利用openpyxl處理excel文件(openpyxl的安裝及簡介)
    但是試想,如果把上述excel公式變成諸如python中的if-else結構,其可讀性肯定是不容置疑的……今天,我們來介紹一款excel處理利器—openpyxl(python庫文件)。根據openpyxl官方文檔,結合個人近年來使用心得,總結openpyxl應用中以下幾個知識點:(一)openpyxl的安裝、導入及相關注意事項;(二)對excel文件的打開、讀寫、編輯、保存相關;(三)對excel文件中樣式的編輯;
  • 如何使用Python批量化處理Excel——零基礎入門指南
    Python也是這樣的,它已經有了非常強大和完備的函數庫,我們只需要調用函數,然後修改參數,就可以用Python來處理我們自己的表格,它與Excel的區別無非就是沒有可視化圖形界面而已,你選不中單元格,沒有各種菜單選項給你點,你只能手動敲擊文本,但當你學習明白函數、參數、返回值、變量等概念,你就能像使用excel那樣使用命令行來進行python編程,並驚嘆於其強大。
  • Python利用openpyxl處理Excel文件(公式實例)
    前面我們學習了Python使用openpyxl模塊處理Excel文件的大部分內容,今天,我們通過一個例子來學習Python使用Excel公式的方法,引出今天的主題利用openpyxl處理Excel公式。
  • 詳解Python操作Excel文件
    4.xlwingsxlwings是一個可以實現從Excel調用Python,也可在python中調用Excel的庫。地址:http://docs.xlwings.org/en/stable/index.html4、強大的轉換器可以處理大部分數據類型,包括在兩個方向上的numpy array和pandas DataFrame。
  • Python之unittest+ddt+openpyxl綜合
    前面寫過python之unittest初探和python之unittest+ddt兩篇文章。(往期公眾號文章)在之前的文章中,寫過可以再次優化。今天寫第三篇的目的,就是在原有基礎上,基於openpyxl模塊再次優化。在第二篇中,注意到測試數據與代碼寫在一起,實在是難以維護操作。
  • Python利用openpyxl處理Excel文件(實戰項目—人口統計)
    之前,學習了兩章關於openpyxl的基礎知識,通過這些還不能了解openpyxl的強大作用。今天,帶領大家通過一個實戰項目認識openpyxl的強大之處,項目來自《Python編程快速上手—讓繁瑣工作自動化》一書,並對書中的例子進行了些許改動和擴充,本文旨在提供一種通過openpyxl處理大量Excel數據並進行數據統計的方法。
  • Python利用openpyxl處理Excel文件(Excel文件基本操作)
    上一篇,我們簡要介紹了openpyxl及其安裝過程,這一篇我們學習使用openpyxl處理Excel的具體過程,力爭涵蓋大多數官方文檔中相關內容,對這一知識點進行簡單的匯總。一、學習目標(一)openpyxl的具體使用。
  • Python利用openpyxl處理Excel文件(單元格樣式設置)
    前面幾個章節,簡單介紹了openpyxl模塊及使用該模塊對Excel文件進行簡單操作,並通過一個實戰項目(人口數據統計)展示了使用openpyxl模塊處理Excel文件的優勢。今天,我們主要梳理通過openpyxl如何對Excel文件的單元格樣式進行編輯。
  • Python利用openpyxl處理Excel文件(單元格及行列具體操作)
    通過實戰項目演示,進一步加深了印象,整個過程我們不難發現,對於使用openpyxl操作Excel文件,行列遍歷及單元格的定位操作是整個過程的重要技巧和先決條件,因此,這節我們著重講解openpyxl對於單元格及行列遍歷的具體操作。
  • Python和Excel終於可以互通了!
    問題描述為了更好地展示數據,Excel格式的數據文件往往比文本文件更具有優勢,但是具體到python中,該如何導出數據到Excel呢?如果碰到需要導出大量數據又該如何操作呢?'''importxlrdimportxlwt# workbook相關fromopenpyxl.workbookimportWorkbook# ExcelWriter,封裝了很強大的excel寫的功能fromopenpyxl.writer.excelimportExcelWriter# 一個
  • 未明學院:用excel不好嗎?為什麼還要學python?
    傳統的商業分析(Business Analysis),定性佔比很大,以相對簡單的數據處理為輔助,人們使用的分析工具主要是Excel;然而,自Excel2007版起,最大支持的工作表大小為16,384 列 × 1,048,576 行,超出最大行列數單元格中的數據將會丟失。
  • 實戰代碼 | Python自動化辦公 - 對Excel表格的操作(openpyxl的基本使用)
    本模板旨在分享和解讀完整代碼,只要你有安裝配置好python環境,在pycharm裡安裝相應的第三方文件庫,黏貼代碼即可運行,我會儘量在代碼後面都進行標註解讀。我們以實用型為目的學習。編程類學習,從模仿中掌握突破。
  • Python 數據處理(十九)—— Excel
    Python 數據處理(十九)Excel 文件read_excel() 方法可以使用 openpyxl 模塊讀取 Excel 2007+(.xlsx)文件可以使用 xlrd 讀取 Excel 2003(.xls)文件。
  • 氣象編程 | 使用python操作Excel文件
    python操作Excel的庫有很多,大概有xlrd、xlwt、openpyxl、XlsxWriter、xlutils、pandas等。這些庫的操作對xls和xlsx的支持不同,有個只可以操作xls,有的只可以進行讀操作。我選用的庫是openpyxl,支持對xlsx的讀寫操作。
  • 如何用python實現excel中的vlookup功能?
    因為刀哥是python初學者,對於需要用到的知識點,如果以前學過的要再複習一下,年紀大了嘛記性比較差,沒學過的新知識點要先學習一下,邊學邊用,所以做的速度比較慢,但是好在,哪怕慢,只要每天進步一點點,都是好的。今天這篇分享,就是刀哥在做的過程中,遇到的其中一個知識點,即用python來實現excel中的vlookup函數功能。
  • Python利用openpyxl來操作Excel(一)
    自動化方面python是在好不過了,不過既然要提交報表,就不免要美觀什麼的。pandas雖然很強大,但是無法對Excel完全操作,現學vba有點來不及。於是就找到這個openpyxl包,用python來修改Excel,礙於水平有限,琢磨了兩天,踩了不少坑,好在完成了自動化工作(以後起碼多出來幾個小時,美滋滋)。在這裡寫下這兩天的筆記和踩得坑,方面新手躲坑,也供自己日後查閱。
  • Pandas進階Excel(一)——讀取
    前面利用python
  • python操作excel:批量生成超連結
    excel設置超連結的函數是HYPERLINK,這裡用python批量生成超連結的思想其實很簡單,就是將公式寫入excel就行。
  • Python Excel 辦公自動化系列——win32com/pandas庫使用詳解
    01 Python Excel庫對比02 Python xlrd 讀取 操作Excel03 Python xlwt 寫入 操作Excel04 Python xlutils 修改 操作Excel05 Python xlwings 讀取 寫入 修改 操作Excel06 Python openpyxl
  • 14-用Python 讀寫 Excel 文件
    最大支持行數為1048576行),人們開始轉向python和R這樣的分析工具了XlsxWriterxlrd&xlwt[2]OpenPyXL[3]Microsoft Excel API[4]介紹可以創建 Excel 2007 或更高版本的 XLSX 文件即 python-excel,含 xlrd、xlwt 和 xlutils 三大模塊,分別提供讀、寫和其他功能可以讀寫 Excel