python腳本處理excel文件

1.對比perl和python

分別嘗試用perl和python處理excel文件,發現perl的比較復雜,比如說read excel就有很多方式

Spreadsheet::Read

use Spreadsheet::ParseExcel

不同的method,對應的取sheet的cell方式也不一樣。更復雜的是處理含有中文內容的Excel。用perl目前沒有成功過。

對于python來說就比較簡單,目前使用openpyxl庫,處理起來清晰明了

2.python處理excel實例

下面給出一個python處理Excel的實例

用python完成兩個excel合并,要求如下:

1. 24xiaoxue.xlsx有A-G列,24zhongxue.xlsx有A-G列

2.用24zhongxue.xlsx的D列匹配24xiaoxue.xlsx的D列,如果有相同項,將24xiaoxue.xlsx相同項所在行添加到24zhongxue.xlsx行尾,并輸出到新的excel

3.支持中文內容

編碼聲明需要放在文件的第一行或第二行,一般使用?# -*- coding: 編碼格式 -*-?這種形式。常見的編碼格式有?utf-8gbkgb2312?等。

# -*- coding: gb2312 -*- #for 中文支持
import openpyxl# 定義文件路徑
file1 = '24zhongxue - 副本.xlsx'  # 小學文件
file2 = '24xiaoxue - 副本.xlsx' # 中學文件
#file1 = 'xxxx.xlsx'  # 小學文件
#file2 = 'xxxx.xlsx' # 中學文件
output_file = 'merged_result.xlsx' # 輸出文件# 加載兩個Excel文件
wb1 = openpyxl.load_workbook(file1)
wb2 = openpyxl.load_workbook(file2)# 獲取第一個工作表
ws1 = wb1.active
ws2 = wb2.active# 創建一個新的工作簿用于保存結果
wb_result = openpyxl.Workbook()
ws_result = wb_result.active# 將24zhongxue.xlsx的標題行復制到新工作簿
for col in range(1, 8):  # A-G列for row in range(1,ws2.max_row+1):ws_result.cell(row=row, column=col).value = ws2.cell(row=row, column=col).value# 創建一個字典,用于存儲24xiaoxue.xlsx中D列的值和對應的行
match_dict = {}
for row in range(1, ws1.max_row + 1):  # 從第1行開始key = ws1.cell(row=row, column=4).value  # D列的值if key:match_dict[key] = row# 遍歷24zhongxue.xlsx的D列,查找匹配項
row_count = 1  # 新工作簿的行計數器
for row in range(1, ws2.max_row + 1):  # 從第1行開始key = ws2.cell(row=row, column=4).value  # D列的值if key and key in match_dict:# 如果找到匹配項,將24xiaoxue.xlsx中匹配的行復制到新工作簿matched_row = match_dict[key]for col in range(1, 8):  # A-G列ws_result.cell(row=row, column=col+10).value = ws1.cell(row=matched_row, column=col).valuerow_count += 1else:# 如果沒有找到匹配項,將24zhongxue.xlsx的當前行復制到新工作簿#for couse Spreadsheet::ParseExcell in range(1, 8):  # A-G列#    ws_result.cell(row=row_count, column=col).value = ws2.cell(row=row, column=col).valuerow_count += 1# 保存結果到新的Excel文件
wb_result.save(output_file)print(f"合并完成,結果已保存到 {output_file}")

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

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

相關文章

3、pytest實現參數化

在 pytest 中,參數化(parametrization)是一種強大的功能,可以讓你用不同的輸入數據重復執行同一個測試函數。這種功能非常有用,可以幫助你顯著減少重復代碼并提高測試覆蓋率。 參數化的主要作用是: 測試多…

Cursor:超強AI變成神器

是一個強大的 AI 編程助手,可以幫助開發者快速地編寫、編輯和討論代碼,支持 Python、Java、C# 等多種編程語言,并且可以與 GitHub、Slack 等平臺集成。 Cursor 是什么? 想象一下,你有一個能把你的創意變成現實的造夢 …

畫秒殺系統流程圖

秒殺系統流程圖 秒殺系統關鍵點 高并發處理: 使用網關(如 Nginx)進行流量限流,避免過載。分布式鎖或 Redis 原子操作控制并發。 活動狀態檢查: Redis 存儲活動狀態(如 seckill:activity:1:status),快速…

【js逆向入門】圖靈爬蟲練習平臺 第九題

地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvOS8 f12進入了debugger,右擊選擇一律不在此處暫停, 點擊繼續執行 查看請求信息 查看載荷,2個加密參數,m和tt 查看啟動器,打上斷點 進來 往…

Vue中的狀態管理器Vuex被Pinia所替代-上手使用指南

Pinia.js 是新一代的狀態管理器,由 Vue.js團隊中成員所開發的,因此也被認為是下一代的 Vuex,即 Vuex5.x,在 Vue3.0 的項目中使用也是備受推崇 Pinia.js 有如下特點: 完整的 typescript 的支持;足夠輕量&…

向量數據庫學習筆記(1) —— 基礎概念

一、 嵌入模型 Embedding Models 嵌入模型是將復雜數據(如文本、圖像、音頻等)轉換為向量表示的機器學習模型 1. 核心概念 嵌入(Embedding):將高維、非結構化的數據映射到低維、稠密的向量空間 向量表示:輸出固定長度的數值向量…

[NO-WX179]基于springboot+微信小程序的在線選課系統

[NO-WX179]基于springboot微信小程序的在線選課系統 1、管理員角色(web端):2、教師角色(web端):3、用戶角色(小程序或web端):4、部分運行截圖管理端--教師管理管理端--學…

2025年滲透測試面試題總結-某 長亭(題目+回答)

網絡安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。 目錄 長亭 一、Spring SpEL表達式注入漏洞 1. 技術原理 2. 利用條件 3. 攻擊方法 4. 防御策略 二、Jav…

conda環境下解決gitk亂碼模糊

關鍵詞 conda、git、gitk、git gui、模糊、linux、亂碼 現象 操作系統:ubuntu24.04 conda版本:25.1.1 正常的終端里gitk顯示不會模糊 但是在conda創建的python虛擬環境中使用gitk,字體開始變得模糊不清 分析 根據deepseek的原因原因分析…

【C++項目實戰】:基于正倒排索引的Boost搜索引擎(1)

1. 項目的相關背景與目標 針對boost網站沒有搜索導航功能,為boost網站文檔的查找提供搜索功能 站內搜索:搜索的數據更垂直,數據量小 類似于cplusplus.com的搜索 2.搜索引擎的相關宏觀原理 3.技術棧和項目環境 技術棧:C/C&am…

汽車高級駕駛輔助系統應用存儲MRAM

高級駕駛輔助系統和先進的互連航空電子技術等應用要求元件能夠承受惡劣的環境條件,并具有較高的耐用性。閃存雖然在某些條件下性能可靠,但在耐用性方面存在局限性,因此無法滿足這些嚴格的要求。 在實時傳感器數據處理或高可靠性通信等對時間…

藍橋-班級活動

問題描述 小明的老師準備組織一次班級活動。班上一共有 n 名 (n 為偶數) 同學,老師想把所有的同學進行分組,每兩名同學一組。為了公平,老師給每名同學隨機分配了一個 n 以內的正整數作為 id,第 i 名同學的 id 為 ai?。 老師希望…

MongoDB 的索引是提高查詢性能的核心機制,類似于傳統關系型數據庫的索引。以下是對 MongoDB 索引的詳細說明:

MongoDB 的索引是提高查詢性能的核心機制,類似于傳統關系型數據庫的索引。以下是對 MongoDB 索引的詳細說明: 一、索引基礎 1. 索引的作用 加速查詢:通過索引快速定位數據,避免全集合掃描(COLLSCAN)。 排…

深入理解指針(1)(C語言版)

文章目錄 前言一、內存和地址1.1 內存1.2 究竟該如何理解編址 二、指針變量和地址2.1 取地址操作符&2.2 指針變量和解引用操作符*2.2.1 指針變量2.2.2 如何拆解指針類型2.2.3 解引用操作符 2.3 指針變量的大小 三、指針變量類型的意義3.1 指針的解引用3.2 指針-整數3.3 voi…

【視頻】m3u8相關操作

【視頻】郭老二博文之:圖像視頻匯總 1、視頻文件轉m3u8 1.1 常用命令 1)默認只保留 5 個ts文件 ffmpeg -i input.mp4 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls stream1.m3u82)去掉音頻 -an,保留全部ts文件 ffmpeg -i input.mp4 -vf scale=640:480 -an -…

AWS CloudWatch 實戰:構建智能監控與自動化運維體系

摘要:本文通過實際案例,詳細講解如何利用AWS CloudWatch實現云端資源的實時監控、日志分析與自動化運維,助力企業提升系統穩定性與運維效率 一、場景痛點分析 某電商平臺遷移至AWS后面臨三大挑戰: 故障響應滯后:服務器…

第一天學爬蟲

閱讀提示:我今天才開始嘗試爬蟲,寫的不好請見諒。 一、準備工具 requests庫:發送HTTP請求并獲取網頁內容。BeautifulSoup庫:解析HTML頁面并提取數據。pandas庫:保存抓取到的數據到CSV文件中。 二、爬取步驟 發送請求…

網絡編程和計算機網絡五層模型的關系

計算機網絡的五層模型(應用層、傳輸層、網絡層、鏈路層和物理層)為網絡編程提供了基礎框架和通信機制。網絡編程就是在這些層次上實現應用程序之間的通信。 計算機網絡五層模型 (1)應用層: 作用:應用層是…

知識篇 | Oracle的 TEMP表空間管理和優化

Oracle臨時表空間(TEMP)是數據庫中用于存儲會話級臨時數據的核心組件,主要用于支持需要中間結果集的操作(如排序、哈希連接)。其數據在事務結束或會話終止后自動釋放,不持久化存儲。 核心特點:…

重學Java基礎篇—線程池參數優化指南

一、核心參數解析 線程池(ThreadPoolExecutor)的性能取決于以下關鍵參數: 參數說明corePoolSize核心線程數,即使空閑也不會被回收maximumPoolSize最大線程數,當隊列滿且核心線程忙時創建新線程workQueue任務隊列&…