網(wǎng)站首頁 編程語言 正文
Python 操作 Excel
本篇博客介紹一種 Python 操作 Excel 的辦法,核心用到 xlrd與xlwt模塊。
-
xlrd
?用于讀?excel; -
xlwt
?用于寫?excel。
模塊安裝比較簡單:
pip install xlrd,xlwt
正式開始前還需要了解一下 Excle 中的三大對象:
-
WorkBook
:工作簿對象 -
Sheet
:表對象 -
Cell
:單元格對象
這里?WorlBook
?表示的是整個 Excel 文件,?Sheet
?表示的是 Excel 中的 Sheet,?Cell
?就是每個單元格。
常用單元格(?Cell
?)中的數(shù)據(jù)類型
- empty(空的)
- string(text)
- number
- date
- boolean
- error
- blank(空白表格)
打開Excel文件讀取數(shù)據(jù)
提前準備一個 Excel 表格,用作測試使用:
直接看代碼即可:
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 print(data) # 輸出 # <xlrd.book.Book object at 0x00000272DE9276A0>
注意最新版的?xlrd
?模塊已經(jīng)不支持?xlsx
?文件了,如果希望支持該文件格式,請使用如下版本?xlrd
?。
pip uninstall xlrd # 卸載當前版本 pip install xlrd==1.2.0 # 安裝1.2.0版本
獲取 Excel 中的Sheet:
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 table = data.sheets()[0] # 通過索引順序獲取 print(table) table = data.sheet_by_index(1) # 通過索引順序獲取 sheet_name = '測試1' table = data.sheet_by_name(sheet_name) # 通過 Sheet 名稱獲取 print(table)
以上方法返回的是?xlrd.sheet.Sheet()
?對象。 如果不存在?Sheet
?,或者名稱寫錯,則出現(xiàn)如下 BUG
xlrd.biffh.XLRDError: No sheet named <'測試1'>
調(diào)用工作簿對象的?sheet_names()
?方法,可以返回工作簿的所有sheet頁名字。
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 sheet_names = data.sheet_names() print(sheet_names)
使用該方法優(yōu)先獲取所有的?sheet_name
?,可以防止調(diào)非法名稱。
行的操作
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 table = data.sheet_by_index(0) nrows = table.nrows # 獲取該sheet中的有效行數(shù) print(nrows)
獲取第一行內(nèi)容:
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 sheet = data.sheet_by_index(0) nrows = sheet.nrows # 獲取該sheet中的有效行數(shù) row_data = sheet.row_values(0) # 獲取第1行的內(nèi)容 print(row_data)
獲取所有行數(shù)據(jù)
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 sheet = data.sheet_by_index(0) nrows = sheet.nrows # 獲取該sheet中的有效行數(shù) for i in range(nrows): print(sheet.row_values(i)) # 獲取第幾行的數(shù)據(jù)
返回由該列中所有的單元格對象組成的列表:
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 sheet = data.sheet_by_index(0) print(sheet.row_slice(0)) # 輸出 # [text:'姓名', text:'班級', text:'年齡']
其余內(nèi)容參考代碼查看即可:
# 返回由該行中所有單元格的數(shù)據(jù)類型組成的列表 sheet .row_types(行索引, start_colx=0, end_colx=None) # 返回由該行中所有單元格的數(shù)據(jù)組成的列表 sheet .row_values(行索引, start_colx=0, end_colx=None) # 返回該列的有效單元格長度 sheet .row_len(行索引)
列的操作
獲取有效列數(shù):
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 sheet = data.sheet_by_index(0) ncols = sheet.ncols #獲取列表的有效列數(shù) print(ncols)
單元格操作
獲取單元格內(nèi)容?cell(rowx, colx)
?:獲取sheet對象中第rowx行,第colx列的單元對象, 返回值的格式為?單元類型:單元值
?。
import xlrd data = xlrd.open_workbook('測試表格.xlsx') # filename 表示文件名以及路徑 sheet = data.sheet_by_index(0) data = sheet.cell(2, 1) print(data)
獲取單元格的值:
data = sheet.cell_value(2, 1) print(data)
xlwt模塊(操作?.xls
?文件進行寫操作) 使用說明在注釋直接查看即可。
import xlwt xl = xlwt.Workbook(encoding='utf-8') # 創(chuàng)建1個sheet對象,第2個參數(shù)是指單元格是否允許重設(shè)置,默認為False sheet = xl.add_sheet('測試', cell_overwrite_ok=True) # 第1個參數(shù)代表行,第2個參數(shù)是列,第3個參數(shù)是內(nèi)容,第4個參數(shù)是格式 sheet.write(0, 0, '姓名') sheet.write(0, 1, '年紀') xl.save('橡皮擦的測試.xls')
設(shè)置單元格樣式的基本用法:
import xlwt xl = xlwt.Workbook(encoding='utf-8') # 創(chuàng)建1個sheet對象,第2個參數(shù)是指單元格是否允許重設(shè)置,默認為False sheet = xl.add_sheet('測試', cell_overwrite_ok=False) # 初始化樣式 style = xlwt.XFStyle() # 為樣式創(chuàng)建字體 font = xlwt.Font() font.name = 'Arial Black' style.font = font # 第1個參數(shù)代表行,第2個參數(shù)是列,第3個參數(shù)是內(nèi)容,第4個參數(shù)是格式 sheet.write(0, 0, '姓名') sheet.write(0, 1, '年紀', style) xl.save('橡皮擦的測試.xls')
合并單元格:
# 合并 第1行到第2行 的 第1列到第2列 sheet.write_merge(1, 2, 1, 2, '合并單元格')
原文鏈接:https://juejin.cn/post/7078101076833992711
相關(guān)推薦
- 2022-06-01 Python寫一個字符串數(shù)字后綴部分的遞增函數(shù)_python
- 2022-04-11 C++?std::initializer_list?實現(xiàn)原理解析及遇到問題_C 語言
- 2022-11-01 C語言strlen,strcpy,strcmp,strcat,strstr字符串操作函數(shù)實現(xiàn)_C 語
- 2022-05-06 詳解go語言中sort如何排序_Golang
- 2022-12-01 Golang打印復(fù)雜結(jié)構(gòu)體兩種方法詳解_Golang
- 2022-10-05 redis復(fù)制集群搭建的實現(xiàn)_Redis
- 2022-01-02 無法將“node.exe”項識別為 cmdlet、函數(shù)、腳本文件或可運行程序的名稱
- 2022-07-21 SpringCache 面向注解開發(fā)
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支