日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Python利用xlrd?與?xlwt?模塊操作?Excel_python

作者:??夢想橡皮擦???? ? 更新時間: 2022-07-11 編程語言

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

欄目分類
最近更新