如何在 Python 中自動化處理 Excel 表格?
現在想象一下從事資料輸入工作的員工的生活。他們的工作是從 Excel 表格中獲取資料並將其插入其他位置。他們瀏覽不同的網站和雜誌,從那裡收集資料,然後將其插入資料庫。他們還需要對條目進行計算。
使用Python自動化無需手動執行這些型別的任務,只需花一個小時寫一段程式碼並自動化這些型別的事情。本文中我們將建立一個小專案來學習 Python 中的自動化。
手動處理或更新數以千計的電子表格將花費太多時間。這可能需要數小時、數天甚至數月的時間。我們將編寫一個 Python 程式來自動執行此任務。我們將處理下圖中給出的資料。
在這個電子表格中,我們有各種交易的記錄,但假設由於錯誤(人為錯誤或系統錯誤),第三列中列出的產品的價格是錯誤的。假設我們需要將價格降低 0.9。可以使用第四列中的數學公式手動完成此任務,但如果有數千條記錄,則會花費太多時間(可能需要 1 周或兩週)。
我們將編寫一個 python 程式來自動化這個過程。此外,我們將為它新增一個圖表。我們的 Python 程式將在幾秒鐘內為我們完成這項任務。
為了處理這個 Excel 工作表,我們將使用
openpyxl
庫 。在
8中執行下面
安裝openpyxl:
# yum -y install python3-openpyxl
現在我們可以匯入這個包來處理我們的電子表格。在此之前,將電子表格新增到專案資料夾中。現在在你的資料夾中建立一個檔案 prod.py 並寫下下面給出的程式碼。
[root@localhost data]# vim prod.py #!/usr/bin/python3 import time import openpyxl as xl from openpyxl.chart import BarChart, Reference def process_workbook(filename): tm = time.strftime('%Y%m%d%H%M') wb = xl.load_workbook(filename) sheet = wb['Sheet1'] for row in range(2, sheet.max_row + 1): cell = sheet.cell(row, 3) corrected_price = float(cell.value) * 0.9 corrected_price_cell = sheet.cell(row, 4) corrected_price_cell.value = corrected_price values = Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4 , max_col=4) chart = BarChart() chart.add_data(values) sheet.add_chart(chart,'G2') wb.save(filename + " " + tm + '.xlsx') process_workbook('/data/prod.xlsx')
我們將逐步解釋上面編寫的程式碼以瞭解完整的過程。
步驟 1. 要處理我們的電子表格匯入 openpyxl 包(我們使用 xl 別名使我們的程式碼更簡潔更短)。此外,要將圖表新增到我們的電子表格,我們需要匯入兩個類 BarChart 和 Reference。匯入time庫,目的是另存表格檔案,防止修改原始檔。
import time import openpyxl as xl from openpyxl.chart import BarChart, Reference
步驟2. 建立一個函式,方便後續呼叫。
def process_workbook(filename):
步驟3. 現在我們需要載入 Excel 工作簿。寫下下面給出的程式碼。tm儲存當前時間,為後續使用。wb 返回物件,使用這個物件,我們訪問 Sheet1工作表。
tm = time.strftime('%Y%m%d%H%M') wb = xl.load_workbook(filename) sheet = wb['Sheet1']
步驟4. 要訪問第三列(價格列的條目)中第 2 行到最後一行有資料的條目,我們需要新增一個 for 迴圈。我們將此條目儲存在可變單元格中。
for row in range(2, sheet.max_row + 1): cell = sheet.cell(row,3)
步驟5. 現在我們需要計算修正後的價格。所以我們將儲存在單元格變數中的值乘以 0.9。計算完成後,我們需要在第 4 列中新增所有更正後的價格。新增新列,引用第四列的單元格。建立單元格後,我們需要在此單元格中設定更正後的價格值。
corrected_price = float(cell.value) * 0.9 corrected_price_cell = sheet.cell(row, 4) corrected_price_cell.value = corrected_price
步驟6. 工作已經完成了一半。我們已經計算了更新後的價格,並將其新增到第四列中。現在我們需要向當前工作表新增一個圖表。要建立圖表,我們需要選擇一個值的範圍。
在這個專案中,我們將選擇第四列中的值(更新後的價格),我們將在我們的圖表中使用它(我們只需要一堆數字來建立一個圖表。
我們需要使用
Reference()
類來選擇一個範圍的值。我們將向這個建構函式新增五個引數。第一個引數是我們正在處理的工作表。接下來的兩個引數
min_row = 2
和
max_row= sheet.max_row
將選擇從第 2 行到最後一個有資料的單元格。要僅從第四列中選擇條目,我們需要傳遞另外兩個引數
min_col=4
和
max_col=4
。將結果儲存在變數“值”中。
values = Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4 , max_col=4)
步驟7. 現在我們已準備好建立圖表。我們將為
BarChart()
類建立一個例項,變數名為
chart
。建立後,在此圖表中新增值。之後,將此圖表新增到工作表的G2單元格中。
chart = BarChart() chart.add_data(values) sheet.add_chart(chart,'G2')
步驟8. 現在我們需要儲存所有更新的條目和我們在上面的程式碼中建立的圖表。我們將把它儲存在一個用
檔名+時間
命名的檔案中,因為我們不想在我們的程式有錯誤的情況下意外覆蓋原始檔。
wb.save(filename + " " + tm + '.xlsx')
步驟9. 執行
process_workbook()
函式,括號裡面寫如prod.xlsx檔案的位置:
process_workbook('/data/prod.xlsx')
執行下面 為 新增執行許可權,並執行指令碼:
[root@localhost data]# chmod +x /data/prod.py [root@localhost data]# /data/prod.py
這只是使用 Python 自動執行重複性無聊任務的一個示例。但請記住,自動化不僅僅與 Excel 電子表格有關。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2844233/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python自動化處理Excel資料PythonExcel
- 【Python自動化Excel】pandas處理Excel的“分分合合”PythonExcel
- Python excel表格讀寫,格式化處理PythonExcel
- 【Python自動化Excel】pandas處理Excel資料的基本流程PythonExcel
- Python中用OpenPyXL處理Excel表格PythonExcel
- ChatExcel--自動處理表格Excel
- 在 Excel 表格中自動高亮當前行Excel
- Python新手處女作:Excel自動錄入&Excel表格快速合併(附有原始碼)PythonExcel原始碼
- Python 中 Panda 庫 處理表格方法Python
- python EXCEL處理PythonExcel
- python處理ExcelPythonExcel
- 自動化測試中的驗證碼處理
- 最全總結 | 聊聊 Python 辦公自動化之 Excel(中)PythonExcel
- Excel檔案 利用MySQL/Python 實現自動處理資料的功能ExcelMySqlPython
- Python 實現自動化 Excel 報表PythonExcel
- Python 辦公自動化之 Excel(一)PythonExcel
- 【Python自動化Excel】Python與pandas字串操作PythonExcel字串
- python處理Excel 之 xlrdPythonExcel
- 如何在iView中動態建立表格View
- 處理Excel表格標題靈活技術二則Excel
- Python資料處理(二):處理 Excel 資料PythonExcel
- python 操作 Excel 表格PythonExcel
- excel怎麼橫向自動求和 excel表格橫向求和公式Excel公式
- win10使用excel表格卡住不動怎麼辦_win10用excel卡死如何處理Win10Excel
- 如何批量處理word中的表格
- Python處理Excel文件之openpyxlPythonExcel
- 汙水處理自動化控制與汙水處理廠集中控制
- Python辦公自動化:效率飛躍,自動化批次彙總Excel到WordPythonExcel
- Python表格處理模組xlrd在Anaconda中的安裝Python
- 【python介面自動化】- openpyxl讀取excel資料PythonExcel
- 驗證碼處理在自動化測試中的應用
- Python web自動化爬蟲-selenium/處理驗證碼/XpathPythonWeb爬蟲
- 如何在Excel表格中快速輸入有規則的資料Excel
- Python讀取Excel表格PythonExcel
- Python使用xlrd處理excel資料PythonExcel
- Python Excel處理庫openpyxl詳解PythonExcel
- 證券行業檔案自動化處理行業
- Hammerspoon for Mac自動化批處理軟體Mac