python openpyxl方法 zip函數(shù)用法及說(shuō)明
python openpyxl方法 zip函數(shù)
import os
from openpyxl import load_workbook
#導(dǎo)入 os模塊和 openpyxl模塊
# 加載一個(gè)xlsl文件
excel_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"cla.xlsx")
# 加載文件的工作簿對(duì)象
wb = load_workbook(excel_path)
# 加載指定工作薄
sh = wb["Sheet1"]
# sh = wb["工作簿的名稱"]
# 獲取當(dāng)行的值
print(sh.cell(3,3).value)
print(sh.cell(3,4).value)
#修改某一行的值
sh.cell(1,1).value = "id "
sh.cell(3,3).value ="python"
#修改某一行的值 sh.cell(行,列).value ="想要修改的值"
# 修改后保存 否則修改后不會(huì)生效
wb.save(excel_path)
#把修改后的文件另存為一個(gè)新文件
new_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"new_cases.xlsx")
wb.save(new_path)
# 獲取表單中最大的行 列
print(sh.max_row)
print(sh.max_column)
# 通過(guò)循環(huán)來(lái)遍歷表里面所有的數(shù)據(jù)
for row in list(sh.values):
print(row)
#未使用zip函數(shù)時(shí)的遍歷
for values in all_values[1:]:
print(keys,values)
#通過(guò)zip函數(shù)來(lái)遍歷我們的鍵和值
#定義一個(gè)空列表
cases_list = []
# 定義一個(gè)變量來(lái)接收值
all_values = list(sh.values)
keys = all_values[0]
# 從第一個(gè)開(kāi)始進(jìn)行遍歷 第0行數(shù)據(jù)是我們的表頭
for values in all_values[1:]:
case = dict(zip(keys,values))
#用zip函數(shù)來(lái)接受我們的遍歷結(jié)果
print(case)
cases_list.append(case)
#zip函數(shù):zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。
new1 = {"性別","姓名","年齡","身高"}
new2 = {"男","python菜鳥(niǎo)","21","175"}
#用列表方式接收返回值
res = list(zip(new1,new2))
print(res)
#用字典方式接收返回值
res1 = dict(zip(new1,new2))
print(res1)Python openpyxl 常用方法即學(xué)即查即用
名詞概念
開(kāi)始之前請(qǐng)先明確一些概念, 工作簿, 指的就是整個(gè)excel文件, 通常為*.xlsx文件, 在代碼中通常寫(xiě)作workbook; 工作簿中包含若干個(gè)sheet, 單個(gè)sheet稱之為工作表, 代碼中通常寫(xiě)作worksheet
如何安裝庫(kù)
打開(kāi)命令行窗口, 輸入
pip install openpyxl
如何新建一個(gè)工作簿
import openpyxl
workbook = openpyxl .Workbook('book.xlsx') # 在工作目錄下新建一個(gè)名字叫book.xlsx的工作簿; 注意, W為大寫(xiě)
workbook.save('book.xlsx') # 保存該工作簿載入一個(gè)工作表(sheet)
workbook = openpyxl.load_workbook('book.xlsx')工作表(sheet)的操作方法
activeSheet = workbook.active # 將默認(rèn)激活的sheet返回到一個(gè)實(shí)例對(duì)象
bookList = workbook.worksheets # 獲取一個(gè)包含所有工作表(sheet)的列表 到 bookList這個(gè)對(duì)象
sheetTitle = bookList[0].title # 獲取bookList這個(gè)列表中的第一個(gè)元素(即第一個(gè)sheet)的名稱字符串
workSheet = workbook['sheet1'] # 將sheet1實(shí)例化到一個(gè)worksheet對(duì)象
workSheet = workbook.worksheets[0] # 將第一個(gè)工作表實(shí)例化到一個(gè)worksheet對(duì)象
workbook.remove(workbook['sheet1']) # 刪除名為sheet1的工作表, 注意, 括號(hào)中的參數(shù)要給到對(duì)象, 不能給字符串類(lèi)型
workbook.create_sheet('sheelt2') # 創(chuàng)建一個(gè)名為sheet2的新工作表
workbook.copy_worksheet(workbook['sheet1']).title = 'sheet_copy' # 等號(hào)前面為復(fù)制sheet1工作表, 等號(hào)后面為同時(shí)重命名為'sheet_copy'
workbook.sheetnames # 返回一個(gè)所有sheet名字的列表單元格(cell)的操作方法
開(kāi)始之前首先要先實(shí)例化一個(gè)工作表對(duì)象:
workSheet = openpyxl.load_workbook('book.xlsx')定位單元格方法:
# 方法1: A1 = workSheet['A1'] # 將單元格A1實(shí)例化到對(duì)象A1 # 方法2: A1 = workSheet.cell(row=1, column=1) #將第一行第一列的單元格實(shí)例化到對(duì)象A1 # 方法3: A1 = workSheet.cell(1, 1) # 同上, 給定參數(shù)的順序?yàn)樾?>列
獲取區(qū)域單元格的方法:
workSheet['A1:C3'] # 獲取A1到C3之間的所有單元格對(duì)象, 返回類(lèi)型是以行為單位的元組, 同時(shí)每行也是一個(gè)元組數(shù)據(jù) workSheet['A:C'] #獲取A~C列的所有單元格對(duì)象, 返回類(lèi)型是以列為單位的元組, 同時(shí)每列也是一個(gè)元組數(shù)據(jù) workSheet.iter_rows(min_row=1, max_row=3, min_col=1, max_col=3) # 獲取第1行到第三行, 第1列到第3列的所有單元格對(duì)象 # 獲取單行數(shù)據(jù): workSheet['1'] # 返回第一行的所有數(shù)據(jù)到一個(gè)元組對(duì)象 # 獲取單列數(shù)據(jù): workSheet['A'] # 返回A列的所有數(shù)據(jù)到一個(gè)元組對(duì)象 # 獲取整個(gè)工作表數(shù)據(jù): list(workSheet.values) #返回一個(gè)列表, 列表中的每個(gè)元素為單行所有數(shù)據(jù)的元組形式 workSheet.rows # 以行為元組單位返回一個(gè)列表元素 workSheet.columns # 以列為元組單位返回一個(gè)列表元素
快速獲取每行或每列數(shù)據(jù)的列表的方法:
row = workSheet['1'] # 將第一行實(shí)例化到row對(duì)象 rowList = [each.value for each in row] # 使用列表表達(dá)式將第一行所有數(shù)據(jù)生成為一個(gè)rowList列表 column = workSheet['A'] # 將第一列實(shí)例化到column對(duì)象 colList = [each.value for each in column] # 使用列表表達(dá)式將第一行所有數(shù)據(jù)生成為一個(gè)colList列表 # 以獲取行數(shù)據(jù)為例, 完整寫(xiě)法如下: row = workSheet['1'] rowList = [] for each in row: rowValue = each.value rowList.append(rowValue)
獲取工作表的最大行數(shù)與最大列數(shù):
worksheet.max_row # 獲取當(dāng)前sheet最大行數(shù), 類(lèi)型為整形 worksheet.max_column # 獲取當(dāng)前sheet最大列數(shù), 類(lèi)型為整形
數(shù)字列號(hào)與字母列號(hào)相互轉(zhuǎn)換的方法:
如何將數(shù)字列轉(zhuǎn)換成字母列?
openpyxl.utils.get_column_letter(1) # 將數(shù)字類(lèi)型的第一列轉(zhuǎn)換為字母類(lèi)型A列, 返回類(lèi)型為字符串
如何將字母列轉(zhuǎn)換成數(shù)字列?
openpyxl.utils.column_index_from_string('AA') #將字母類(lèi)型的列號(hào)轉(zhuǎn)換為數(shù)字列號(hào), 返回類(lèi)型為字符串獲取單元格行號(hào)與列號(hào)
首先實(shí)例化一個(gè)單元格對(duì)象:
cell = worksheet['C3'] # 將第3行第3列的單元格實(shí)例化到一個(gè)cell元素 cell.row # 獲取單元格的行號(hào), 類(lèi)型為int整形 cell.column # 獲取單元格的列號(hào), 類(lèi)型為int整形
寫(xiě)入與插入數(shù)據(jù)
worksheet['A1'] = 'string' # 在A1單元格寫(xiě)入字符串'string' worksheet.cell(1, 1) = 'string # 在A1單元格寫(xiě)入字符串'string' worksheet.insert_cols(idx=1, amount = 5) # 在第一列后插入5列空列 worksheet.insert_rows(idx=1, amount = 5) # 在第一行后插入5列空行 worksheet.delete_rows(idx=1, amount = 5) # 在第一行后連續(xù)刪除5行 worksheet.delete_cols(idx=1, amount = 5) # 在第一列后連續(xù)刪除5列
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
把vgg-face.mat權(quán)重遷移到pytorch模型示例
今天小編就為大家分享一篇把vgg-face.mat權(quán)重遷移到pytorch模型示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
JAVA及PYTHON質(zhì)數(shù)計(jì)算代碼對(duì)比解析
這篇文章主要介紹了JAVA及PYTHON質(zhì)數(shù)計(jì)算代碼對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python時(shí)間序列處理之ARIMA模型的使用講解
今天小編就為大家分享一篇關(guān)于Python時(shí)間序列處理之ARIMA模型的使用講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
淺談Django QuerySet對(duì)象(模型.objects)的常用方法
這篇文章主要介紹了淺談Django QuerySet對(duì)象(模型.objects)的常用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Python中asyncore異步模塊的用法及實(shí)現(xiàn)httpclient的實(shí)例
asyncore即是一個(gè)異步的socket封裝,特別是dispatcher類(lèi)中包含了很多異步調(diào)用的socket操作方法,非常犀利,下面我們就來(lái)講解Python中asyncore異步模塊的用法及實(shí)現(xiàn)httpclient的實(shí)例2016-06-06
解決python訪問(wèn)報(bào)錯(cuò):jinja2.exceptions.TemplateNotFound:index.html
這篇文章主要介紹了解決python訪問(wèn)報(bào)錯(cuò):jinja2.exceptions.TemplateNotFound:index.html,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Python中tkinter無(wú)法同時(shí)顯示多個(gè)image的解決方法及pack與place解析
這篇文章主要介紹了Python中tkinter無(wú)法同時(shí)顯示多個(gè)image的解決方法及pack與place解析,本文給大家分享問(wèn)題原因解析及解決方案,需要的朋友可以參考下2023-02-02
python使用BeautifulSoup分頁(yè)網(wǎng)頁(yè)中超鏈接的方法
這篇文章主要介紹了python使用BeautifulSoup分頁(yè)網(wǎng)頁(yè)中超鏈接的方法,涉及Python使用BeautifulSoup模塊操作網(wǎng)頁(yè)鏈接的技巧,需要的朋友可以參考下2015-04-04
Python如何讀寫(xiě)二進(jìn)制數(shù)組數(shù)據(jù)
這篇文章主要介紹了Python如何讀寫(xiě)二進(jìn)制數(shù)組數(shù)據(jù),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08

