python基礎-13-處理excel電子表格

文章目錄

  • 【README】
  • 【13】處理Excel電子表格
    • 【13.1】Excel文檔
    • 【13.2】安裝openpyxl模塊
    • 【13.3】讀取Excel文檔
      • 【13.3.1】使用openpyxl模塊打開excel文檔
      • 【13.3.2】從工作簿取得工作表
      • 【13.3.3】從工作表sheet獲取單元格cell
      • 【13.3.5】從表中獲取行和列
      • 【13.3.6】工作簿、工作表、單元格復習
    • 【13.5】寫入Excel文檔
      • 【13.5.1】創建并保存Excel文檔
      • 【13.5.2】創建和刪除工作表
      • 【13.5.3】把值寫入單元格

【README】

本文總結自《python編程快速上手-讓繁瑣工作自動化》第13章,非常棒的一本書,墻裂推薦;



【13】處理Excel電子表格

【13.1】Excel文檔

1)Excel文檔:就是一個工作簿,一個工作簿保存到xlsx文件;一個工作簿可以有多個工作表,即sheet;

【13.2】安裝openpyxl模塊

D:\studynote\00-ai-llm\workbench\PythonBasicStudy\.venv\Scripts>pip install openpyxl
Collecting openpyxlDownloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
Collecting et-xmlfile (from openpyxl)Downloading et_xmlfile-2.0.0-py3-none-any.whl.metadata (2.7 kB)
Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)
Installing collected packages: et-xmlfile, openpyxl
Successfully installed et-xmlfile-2.0.0 openpyxl-3.1.5

【13.3】讀取Excel文檔

【13.3.1】使用openpyxl模塊打開excel文檔

import openpyxl
from pathlib import Path# 使用openpyxl模塊讀取excel文件
wb = openpyxl.load_workbook(Path.cwd() / '1301-工作簿.xlsx')
print(type(wb))
# <class 'openpyxl.workbook.workbook.Workbook'>print(wb.sheetnames)
# ['Sheet1', 'Sheet2', 'Sheet3']sheet1 = wb['Sheet1']
print(sheet1['A1'].value)
# id

【13.3.2】從工作簿取得工作表

1)python使用Worksheet抽象工作表

sheet1 = wb['Sheet1']
print(sheet1['A1'].value)
# id

【13.3.3】從工作表sheet獲取單元格cell

# 打印行列坐標及值
cell = sheet1['A1']
print(f'[%s][%s] = %s' % (cell.row, cell.column, cell.value))
# [1][1] = id# 通過數字定位行列坐標(從1開始計數)
for i in range(1, 5):for j in range(1, 4):cell = sheet1.cell(i, j)print(f'[%s][%s] = %s' % (cell.row, cell.column, cell.value), end='  ')print()
# [1][1] = id  [1][2] = name  [1][3] = addr
# [2][1] = 1  [2][2] = 張三01  [2][3] = 成都01
# [3][1] = 2  [3][2] = 張三02  [3][3] = 成都02
# [4][1] = 3  [4][2] = 張三03  [4][3] = 成都03

【13.3.5】從表中獲取行和列

1)可以把Worksheet切片,取得表格中一行,一列或一個矩形區域中的所有單元格;

wb = openpyxl.load_workbook(Path.cwd() / '1301-工作簿.xlsx')
sheet1 = wb['Sheet1']
sheetTuple = tuple(sheet1['A1':'A3'])
print(sheetTuple)
# ((<Cell 'Sheet1'.A1>,), (<Cell 'Sheet1'.A2>,), (<Cell 'Sheet1'.A3>,))# 獲取行與列的單元格
print("====== 從表中獲取行和列 ======")
for rowOfCellObjects in sheet1:for cell in rowOfCellObjects:print(cell.coordinate, cell.value, end=' ')print()
# ====== 從表中獲取行和列 ======
# A1 id B1 name C1 addr
# A2 1 B2 張三01 C2 成都01
# A3 2 B3 張三02 C3 成都02
# A4 3 B4 張三03 C4 成都03

2)獲取整列或整行

# 獲取整行
print("\n======= 獲取整行 =======")
rowList = list(sheet1.rows)
# rowList = [(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
# , (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>)
# , (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>)
# , (<Cell 'Sheet1'.A4>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>)]
print("rowList = " + str(rowList))
for rowObject in rowList:for cellObject in rowObject:print(f'%s = %s ' % (cellObject.coordinate, cellObject.value), end=' ')print()
# A1 = id  B1 = name  C1 = addr
# A2 = 1  B2 = 張三01  C2 = 成都01
# A3 = 2  B3 = 張三02  C3 = 成都02
# A4 = 3  B4 = 張三03  C4 = 成都03

【13.3.6】工作簿、工作表、單元格復習

1)從工作簿讀取單元格涉及的所有函數,方法和數據類型;

  • 導入openpyxl模塊
  • 調用 openpyxl.load_workbook()函數;
  • 取得Workbook對象; 抽象工作簿;
  • 使用active或sheetnames屬性;
    • 使用Workbook對象的active屬性獲取工作簿的活動表;
  • 取得Worksheet對象;抽象工作表(一個工作簿包含多個工作表)
  • 使用索引或工作表的cell方法,帶上row和col坐標;
  • 獲取Cell對象;訪問Cell.value屬性;


【13.5】寫入Excel文檔

【13.5.1】創建并保存Excel文檔

import openpyxl
from pathlib import Pathwb = openpyxl.Workbook()
# 使用Workbook對象的active屬性獲取工作簿的活動表
sheet01 = wb.active
print(sheet01.title) # Sheet
sheet01.title = 'PythonWriteSheet01'
print(wb.sheetnames) # ['PythonWriteSheet01']
# 保存到xlsx文檔
result = wb.save(Path.cwd() / '1305-01工作簿.xlsx')

【13.5.2】創建和刪除工作表

1)調用 create_sheet() 和 del操作符 用于創建和刪除工作表 ;

  • 注意是工作表,而不是工作簿;一個工作簿可以包含多個工作表;
## 創建和刪除工作表
wb = openpyxl.Workbook()
# 創建工作表
wb.create_sheet("PythonWriteSheet10")
print(wb.sheetnames)
# ['Sheet', 'PythonWriteSheet02']# 創建工作表
wb.create_sheet(index=0, title="PythonWriteSheet00")
wb.create_sheet(index=1, title="PythonWriteSheet01")
wb.create_sheet(index=2, title="PythonWriteSheet02")
wb.create_sheet(index=3, title="PythonWriteSheet03")
print(wb.sheetnames)
# ['PythonWriteSheet00', 'PythonWriteSheet01', 'PythonWriteSheet02', 'PythonWriteSheet03', 'Sheet', 'PythonWriteSheet10']# 刪除工作表
del wb['PythonWriteSheet10']
print(wb.sheetnames)
# ['PythonWriteSheet00', 'PythonWriteSheet01', 'PythonWriteSheet02', 'PythonWriteSheet03', 'Sheet']# 保存excel文件到磁盤
wb.save(Path.cwd() / '1305-02工作簿.xlsx')
wb.close()

【13.5.3】把值寫入單元格

# 把值寫入單元格
wb = openpyxl.Workbook()
# 創建工作表
wb.create_sheet("PythonWriteSheetA01")
sheetA01 = wb["PythonWriteSheetA01"]
sheetA01.cell(1, 1, "值1-1")
sheetA01.cell(1, 2, "值1-2")
sheetA01.cell(2, 1, "值2-1")
sheetA01.cell(2, 2, "值2-2")
wb.save(Path.cwd() / '1305-工作簿A01.xlsx')
wb.close()


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

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

相關文章

ABS函數c++

簡介&#xff1a; abs 函數用于計算一個數的絕對值&#xff0c;在 C 中它繼承自 C 語言的標準庫&#xff0c;其歷史可以追溯到早期的 C 語言發展歷程&#xff0c;以下是詳細介紹&#xff1a; 早期編程語言的需求 在計算機編程的早期階段&#xff0c;處理數學運算就是一項基本…

閉環SOTA!北航DiffAD:基于擴散模型實現端到端自動駕駛「多任務閉環統一」

端到端自動駕駛目前是有望實現完全自動駕駛的一條有前景的途徑。然而&#xff0c;現有的端到端自動駕駛系統通常采用主干網絡與多任務頭結合的方式&#xff0c;但是它們存在任務協調和系統復雜度高的問題。為此&#xff0c;本文提出了DiffAD&#xff0c;它統一了各種駕駛目標并…

整車CAN網絡和CANoe

車載網絡中主要包含有Can網絡,Lin網絡,FlexRay,Most,以太網。 500kbps:500波特率,表示的數據傳輸的速度。表示的是最大的網速傳輸速度。也就是每秒 500kb BodyCan車身Can InfoCan娛樂信息Can 車身CAN主要連接的是ESB電動安全帶 ADB自適應遠光燈等 PTCan動力Can 底盤Can

實戰設計模式之迭代器模式

概述 與上一篇介紹的解釋器模式一樣&#xff0c;迭代器模式也是一種行為設計模式。它提供了一種方法來順序訪問一個聚合對象中的各個元素&#xff0c;而無需暴露該對象的內部表示。簡而言之&#xff0c;迭代器模式允許我們遍歷集合數據結構中的元素&#xff0c;而不必了解這些集…

JVM 垃圾回收器是如何判斷一個對象是否要回收?

JVM 垃圾回收器&#xff08;Garbage Collector&#xff09;需要判斷哪些對象是“垃圾”&#xff0c;即不再被程序使用的對象&#xff0c;以便回收它們占用的內存。JVM 主要使用以下兩種方法來判斷對象是否是垃圾&#xff1a; 1. 引用計數算法 (Reference Counting): 原理&…

kali——httrack

目錄 前言 使用教程 前言 HTTrack 是一款運行于 Kali Linux 系統中的開源網站鏡像工具&#xff0c;它能將網站的頁面、圖片、鏈接等資源完整地下載到本地&#xff0c;構建出一個和原網站結構相似的離線副本。 使用教程 apt install httrack //安裝httrack工具 httrac…

kotlin函數類型

一 函數類型定義 1 定義 函數類型就是 (Int, Int) -> Int 函數類型其實就是將函數的 “參數類型” 和 “返回值類型” 抽象出來 2 示例 &#xff1a; (Int, Int) -> Int 表示接收兩個 Int 參數并返回 Int 的函數類型&#xff1b; (String) -> Unit 表示接收 Strin…

C# Winform 入門(9)之如何封裝并調用dll

封裝dll 首先創建 .Net平臺 類庫 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _09.Encapsulation_dll {public class Program{/// <summary>/// 求兩個double類型的數值的和/// &l…

前后端分離下,Spring Boot 請求從發起到響應的完整執行流程

以下是前后端分離架構下&#xff0c;Spring Boot 請求從發起到響應的完整執行流程&#xff0c;結合你提出的所有問題&#xff0c;按真實執行順序和職責鏈條重新整理所有核心概念、結構、關鍵類、數據轉換點和典型代碼示例&#xff1a; 一、前端發起請求&#xff08;步驟1-2&…

基于sklearn實現文本摘要思考

和各位小伙伴分享一下使用sklearn進行文本摘要的思考。 第一版本 原理 提取式文本摘要的基本原理是&#xff1a; 將文本分割成句子 計算每個句子的重要性(權重) 選擇權重最高的幾個句子組成摘要 常用的句子權重計算方法&#xff1a; TF-IDF&#xff1a;基于詞頻-逆文檔頻…

OpenHarmony子系統開發 - DFX(三)

OpenHarmony子系統開發 - DFX&#xff08;三&#xff09; 五、HiTraceMeter開發指導 HiTraceMeter概述 簡介 HiTraceMeter在OpenHarmony中&#xff0c;為開發者提供業務流程調用鏈跟蹤的維測接口。通過使用該接口所提供的功能&#xff0c;可以幫助開發者迅速獲取指定業務流…

2025年 能夠有效提升AI的生成質量和邏輯嚴謹性 的通用型系統提示

以下是三個經過精心設計的通用型系統提示&#xff08;System Prompt&#xff09;&#xff0c;能夠有效提升AI的生成質量和邏輯嚴謹性&#xff0c;適用于各類對話、分析和創作場景&#xff1a; Prompt 1 - 專家級分步驗證模式 你是一個具備跨領域知識整合能力的超級AI&#xff…

python爬蟲:小程序逆向實戰教程

根據我之前發表的文章&#xff0c;我們進行延伸實戰https://blog.csdn.net/weixin_64809364/article/details/146981598?spm1001.2014.3001.5501 1. 想要爬取什么小程序&#xff0c;我們進行搜索 2. 找到我們vx小程序的文件地址&#xff0c;我們就可以進行破解 破解步驟強看…

C語言變長數組(VLA)詳解:靈活處理動態數據的利器

引言 在C語言中&#xff0c;傳統的數組大小必須在編譯時確定&#xff0c;這限制了程序處理動態數據的靈活性。C99標準引入的變長數組&#xff08;Variable-Length Array, VLA&#xff09; 打破了這一限制&#xff0c;允許數組長度在運行時動態確定。本文將深入解析VLA的語法、…

串口數據轉換為IP數據

串口數據轉換為IP數據是一種常見的通信技術,用于將傳統的串行設備(如傳感器、控制器等)接入現代的IP網絡。以下是詳細介紹: 1. 轉換原理 串口數據轉換為IP數據的過程涉及硬件和軟件的結合,核心是將串行數據封裝為TCP/IP或UDP/IP數據包,通過網絡傳輸。具體步驟如下: 硬…

client-go如何監聽自定義資源

如何使用 client-go 監聽自定義資源 在 Kubernetes 中使用 client-go 監聽自定義資源&#xff08;Custom Resource&#xff0c;簡稱 CR&#xff09;需要借助 Dynamic Client 或 Custom Informer&#xff0c;因為 client-go 的標準 Clientset 只支持內置資源&#xff08;如 Pod…

C++軟件開發架構

文章目錄 1.全局消息通信MsgHandler.h單元測試(QTest)MsgHandlerUnitTest.hMsgHandlerUnitTest.cpp 2.實例間通信InstMsgHandler.h單元測試InstMsgHandlerUnitTest.hInstMsgHandlerUnitTest.cpp 1.全局消息通信 1. 適用于類與類單個對象實例之間的通信&#xff0c;多個對象需要…

AI Agent設計模式一:Chain

概念 &#xff1a;線性任務流設計 ? 優點&#xff1a;邏輯清晰易調試&#xff0c;適合線性處理流程? 缺點&#xff1a;缺乏動態分支能力 from typing import TypedDictfrom langgraph.graph import StateGraph, END# 定義后續用到的一些變量 class CustomState(TypedDict):p…

Git三劍客:工作區、暫存區、版本庫深度解析

一、引言&#xff1a;為什么需要理解Git的核心區域&#xff1f; 作為開發者&#xff0c;Git是日常必備的版本控制工具。但你是否曾因以下問題感到困惑&#xff1f; 修改了文件&#xff0c;但 git status 顯示一片混亂&#xff1f; git add 和 git commit 到底做了什么&#x…

Python數據類型-list

列表(List)是Python中最常用的數據類型之一&#xff0c;它是一個有序、可變的元素集合。 1. 列表基礎 創建列表 empty_list [] # 空列表 numbers [1, 2, 3, 4, 5] # 數字列表 fruits [apple, banana, orange] # 字符串列表 mixed [1, hello, 3.14, True] # 混合類型…