在ubuntu上用Python的openpyxl模塊操作Excel的案例

文章目錄

  • 安裝模塊
  • 讀取Excel
  • 數據庫取數
  • 匹配數據和更新Excel數據


在Ubuntu系統的環境下基本職能借助Python的openpyxl模塊實現對Excel數據的操作。


安裝模塊

本次需要用到的模塊需要提前安裝(如果沒有的話)

pip3 install openpyxl
pip3 install pymysql

在操作前,需要準備好用于操作的Excel文件,假設其文件名為 example.xlsx
此外,還需準備好相應的數據庫,本文以MySQL 5.7數據庫為例,確保數據庫中包含相應的數據表及數據。


讀取Excel

使用openpyxl模塊讀取Excel文件中的數據,可參考以下代碼示例:

from openpyxl import load_workbook# 加載Excel文件
workbook = load_workbook('example.xlsx')# 選擇活動工作表
sheet = workbook.active# 讀取數據并存儲
rows = sheet.max_row
cols = sheet.max_column
data_list = []
for row in range(1, rows + 1):row_data = []for col in range(1, cols + 1):cell_value = sheet.cell(row=row, column=col).valuerow_data.append(cell_value)data_list.append(row_data)# 顯示讀取的數據
for row in data_list:print(row)

上述代碼將Excel文件中的數據讀取并存儲到 data_list 列表中,以便后續與數據庫數據進行匹配。


數據庫取數

以下是連接數據庫并進行簡單查詢的代碼示例:

import pymysql# 連接數據庫
connection = pymysql.connect(host='localhost',user='root',password='your_password',database='your_database',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor
)try:with connection.cursor() as cursor:# 查詢數據search_value = data_list[0][0]  # 以data_list第一個元素的第一列的值作為搜索條件sql = "SELECT * FROM your_table WHERE some_column = %s"cursor.execute(sql, (search_value,))result = cursor.fetchall()# 顯示匹配結果for row in result:print(row)
finally:connection.close()

在使用過程中,需要根據實際情況修改連接參數及查詢語句中的相關字段。


匹配數據和更新Excel數據

假設匹配到的數據存儲在 result 列表中,現在需要將匹配結果更新回Excel數據中,具體操作如下:

from openpyxl import Workbook# 創建新的工作簿
workbook = load_workbook('example.xlsx')
sheet = workbook.active# 寫入表頭信息
sheet['A'] = '原數據'
sheet['B'] = '匹配結果'# 將原數據和新列寫入Excel
for i, row in enumerate(data_list, start=1):sheet.cell(row=i, column=1).value = rowmatched = Falsefor res in result:if row[0] == res['col']:  # 假設匹配字段在第一列且數據庫查詢結果字段名為'col'sheet.cell(row=i, column=2).value = '匹配成功'matched = Truebreakif not matched:sheet.cell(row=i, column=2).value = '無匹配數據'# 保存更新后的新工作簿
workbook.save('matched_data.xlsx')

請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70262.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70262.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70262.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GeoHD - 一種用于智慧城市熱點探測的Python工具箱

GeoHD - 一種用于智慧城市熱點探測的Python工具箱 詳細原理請參考:Yan, Y., Quan, W., Wang, H., 2024. A data‐driven adaptive geospatial hotspot detection approach in smart cities. Trans. GIS tgis.13137. 代碼下載:下載 1. 簡介 在城市數據…

16 中介者(Mediator)模式

中介者模式 1.1 分類 (對象)行為型 1.2 提出問題 實現一個機場的起飛管理系統,如果由駕駛員們討論誰先飛,后果可能是災難性的。 1.3 解決方案 用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用&a…

最薄的機身,游最深的海

經濟全球化的潮流,勢不可擋。 “技術、通訊和全球化,正在消除傳統的地理和經濟邊界,使競爭環境趨于平等。”《世界是平的》作者托馬斯弗里德曼預言的"扁平化競爭"正加速演進。 在高端智能手機戰場,一場由中國企業主導…

【HarmonyOS Next】鴻蒙監聽手機按鍵

【HarmonyOS Next】鴻蒙監聽手機按鍵 一、前言 應用開發中我們會遇到監聽用戶實體按鍵,或者擴展按鍵的需求。亦或者是在某些場景下,禁止用戶按下某些按鍵的業務需求。 這兩種需求,鴻蒙都提供了對應的監聽事件進行處理。 onKeyEvent 默認的…

IC設計版圖中GDS2文件格式詳解

版圖中GDS2文件格式詳解 目錄 什么是GDS2文件?GDS2文件的歷史與發展GDS2文件的結構解析GDS2文件的核心元素GDS2 vs. OASIS: 核心差異如何生成與查看GDS2文件?GDS2文件的局限性應用場景總結 什么是GDS2文件? GDS2(Graphic Data …

KMP算法:字符串匹配的智慧跳躍

文章目錄 起因:暴力法的致命缺陷暴力搜索的局限性 KMP核心思想:避免重復理解前綴表(PMT)不匹配時的回退機制代碼:高效字符串匹配補充:next表和PMT表 暴力法 vs KMP總結:KMP 是如何改變游戲規則的…

上位機知識篇---setuptools

文章目錄 前言簡介一、核心功能1.依賴管理自動安裝依賴版本約束額外依賴組命令行工具插件系統 2.開發模式安裝3.資源文件管理4.Egg 分發(已逐漸被 Wheel 取代)5.命名空間包 二、基礎用法1. 項目結構示例2. 配置文件 setup.cfg3. setup.py 最小化示例&…

藍橋杯學習大綱

(致酷德與熱愛算法、編程的小伙伴們) 在查閱了相當多的資料后,發現沒有那篇博客、文章很符合我們備戰藍橋杯的學習路徑。所以,干脆自己整理一篇,歡迎大家補充! 一、藍橋必備高頻考點 我們以此為重點學習…

Go 錯誤處理與調試:面向對象的入門教程

Go 錯誤處理與調試:面向對象的入門教程 Go 語言因其簡潔、高效和易于并發編程的特性,逐漸成為后端開發的主流語言之一。錯誤處理是任何編程語言中非常重要的一部分,尤其是在 Go 語言中,Go 提供了一種不同于傳統異常處理機制的錯誤…

Linux探秘坊-------4.進度條小程序

1.緩沖區 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }執行此代碼后&#xff0c;會 先停頓兩秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;為什么會后打印呢&#xff1f; 因為&#xff…

基于Python的Diango旅游數據分析推薦系統設計與實現+畢業論文(15000字)

基于Python的Diango旅游數據分析推薦系系統設計與實現畢業論文指導搭建視頻&#xff0c;帶爬蟲 配套論文1w5字 可定制到某個省份&#xff0c;加40 基于用戶的協同過濾算法 有后臺管理 2w多數據集 可配套指導搭建視頻&#xff0c;加20 旅游數據分析推薦系統采用了Python語…

Scrapy:DownloaderAwarePriorityQueue隊列設計詳解

DownloaderAwarePriorityQueue 學習筆記 1. 簡介 DownloaderAwarePriorityQueue 是 Scrapy 中一個高級的優先級隊列實現&#xff0c;它不僅考慮請求的優先級&#xff0c;還會考慮下載器的負載情況。這個隊列為每個域名&#xff08;slot&#xff09;維護獨立的優先級隊列&#…

dify-AI 私有部署可修改前端頁面

dify文檔 官方文檔&#xff1a;歡迎使用 Dify | Dify 源碼&#xff1a;https://github.com/langgenius/dify.git 安裝docker 官網&#xff1a;https://www.docker.com/ 部署服務到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…

PHP基礎部分

但凡是和輸入、寫入相關的一定要預防別人植入惡意代碼! HTML部分 語句格式 <br> <hr> 分割符 <p>插入一行 按住shift 輸入! 然后按回車可快速輸入html代碼(VsCode需要先安裝live server插件) html:<h1>標題 數字越大越往后</h1> <p…

【Elasticsearch】Retrieve inner hits獲取嵌套查詢的具體的嵌套文檔來源,以及父子文檔的來源

Retrieve inner hits 是 Elasticsearch 中的一個功能&#xff0c;用于在嵌套查詢或父子查詢中&#xff0c;返回導致主文檔匹配的具體嵌套對象或子/父文檔的詳細信息&#xff0c;幫助用戶更直觀地理解查詢結果的來源。 在 Elasticsearch 中&#xff0c;Retrieve inner hits是一…

SpringCloud面試題----eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的區別

dEureka 和 Zookeeper 都可以提供服務注冊與發現的功能,它們的區別主要體現在以下幾個方面: 設計理念 Eureka:是基于 RESTful 風格設計的,強調簡單、輕量級,旨在為微服務架構提供一種易于使用的服務發現解決方案,注重服務的可用性和靈活性。Zookeeper:最初是為分布式協…

數據庫提權總結

Mysql提權 UDF提權是利用MYSQL的自定義函數功能&#xff0c;將MYSQL賬號轉化為系統system權限 前提&#xff1a; 1.UDF提權條件 &#xff08;1&#xff09;Mysql版本大于5.1版本udf.dll文件必須放置于MYSQL安裝目錄下的lib\plugin文件夾下。 &#xff08;2&#xff09;Mysql…

“深入淺出”系列之QT:(10)Qt接入Deepseek

項目配置&#xff1a; 在.pro文件中添加網絡模塊&#xff1a; QT core network API配置&#xff1a; 將apiUrl替換為實際的DeepSeek API端點 將apiKey替換為你的有效API密鑰 根據API文檔調整請求參數&#xff08;模型名稱、溫度值等&#xff09; 功能說明&#xff1a; 使…

【Linux探索學習】第二十七彈——信號(上):Linux 信號基礎詳解

Linux學習筆記&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我們已經將進程通信部分講完了&#xff0c;現在我們來講一個進程部分也非常重要的知識點——信號&#xff0c;信號也是進程間通信的一…

nginx負載均衡, 解決iphash不均衡的問題之consistent

原因分析 客戶端IP分布不均&#xff1a;部分IP段請求集中&#xff0c;導致哈希到同一后端。 服務器數量變動&#xff1a;增刪節點時&#xff0c;傳統ip_hash未使用一致性哈希&#xff0c;導致分布重置。 哈希鍵范圍過小&#xff1a;例如僅使用IPv4前24位&#xff0c;不同IP可…