openpyxl模块_Openpyxl让Excel飞(一)
openpyxl?庫簡介及安裝
openpyxl是一個開源的Excel文件處理庫,可以用于處理Excel 2010版及以后的文件(官網(wǎng)說法,實際好像2007版Excel文件也可以處理,只要是后綴名為.xlsx、.xlsm、xltx)。
基本上,使用openpyxl 可以進行Excel絕大部分操作。主要常用功能有以下:
新建、加載、保存xlsx表格
工作表sheet的操作
單元格操作
行列操作
格式設(shè)置
圖表應(yīng)用
打印設(shè)置
結(jié)合numpy或Pandas使用
openpyxl的安裝,使用pip 進行安裝即可,安裝的命令如下:
pip?install?openpyxl如果不太了解pip 安裝python庫,可以參考以下文章:
Python 庫管家----pip
openpyxl Excel文件及sheet工作表操作
建議在Pycharm中嘗試以下功能,新建一個python文件,并使用以下代碼導(dǎo)入openpyxl庫。
from openpyxl import Workbookfrom?openpyxl?import?load_workbook?#使用load_workbook需要用到這部分功能新建表格(此時并未保存表格,wb為變量名)
wb = Workbook()加載現(xiàn)有表格
wb = load_workbook('Excel name.xlsx')#如果Excel名前未加文件路徑,則默認(rèn)在相應(yīng)python project路徑下尋找同名表格加載#如果是加上路徑,則是加載指定下路徑的Excel表格保存表格
wb.save('Excel name.xlsx')#如果需要更換位置保存,則在Excel名前加入路徑,例如'C:\Excel name.xlsx'將當(dāng)前激活的sheet工作表定義為ws(變量名)
ws = wb.active#假設(shè)現(xiàn)在打開Excel name.xlsx是Sheet1處于編輯狀態(tài),則wb.active選擇的是Sheet1#如果Sheet2處于編輯狀態(tài),則wb.active選擇的是Sheet2通過指定sheet工作表定義ws
ws?=?wb["Sheet2"]#將Sheet2定義為ws創(chuàng)建sheet 工作表
ws = wb.create_sheet("NewSheet", 0)#括弧內(nèi)0指創(chuàng)建的新工作表位置,0表示第一張sheet工作表。#如果有同名sheet,也會新建,但新建的sheet名后會加數(shù)字1,如NewSheet1獲取所有sheet工作表名
sheetname = wb.sheetnames#wb.sheetnames 可以獲取表格wb中所有的sheet工作表。并儲存為列表sheetname通過指定sheetname 列表定義ws
sheetname = wb.sheetnamesws?=?wb[sheetname[0]]修改sheet工作表名
ws.title = "UpdateTitle"#sheet名可以通過title屬性進行更改刪除sheet工作表
wb.remove(ws)更改sheet工作表欄顏色
ws.sheet_prperties.tabColor = "2A22AB"#2A22AB為十六進制數(shù)字,代表RGB三原色。單元格操作
單元格賦值?(一)
ws['A1'] = 10 #在A1單元格輸入數(shù)字10ws['A2']?=?'Trial'???#在A2單元格輸入文本'Trial'單元格賦值?(二)
ws.cell(row?=1,?column?=?2).value?=?"IT"?#給第一行第二列賦值文本'IT'單元格賦值?(三)
ws.cell(row=1,?column=1,?value='Trial')?#給第一列第一行單元格賦值'Trial'單元格賦值?(四)
ws.cell(2,1,99)?#給第二行第一列單元格賦值99獲取單元格值(一)
cellvalue?=?ws['A1'].value??#value?屬性可以獲取單元格的值,將'A1'單元格的值賦值給cellvalueprint(ws['A1']) #打印單元格信息,不是單元格的值print(cellvalue)?#打印'A1'單元格值,下圖為基于”單元格賦值(一)“代碼結(jié)果獲取單元格值(二)
cellvalue = ws.cell(row=1,column=1).valueprint(ws.cell(row=1,column=1)) #打印單元格信息,不是單元格的值print(cellvalue)?#打印第一行第一列單元格值,下圖為基于”單元格賦值(三)“代碼結(jié)果獲取單元格值(三)
cellvalue = ws.cell(2,1).valueprint(ws.cell(2,1)) #打印單元格信息,不是單元格的值print(cellvalue) #打印第二行第一列單元格值,下圖為基于”單元格賦值(四)“代碼結(jié)果單元格輸入公式
ws['A1'] = '=SUM(2,2)' #A1單元格輸入Excel SUM函數(shù),求2+2的和ws['A2']?=?'=A1&"ABC"'?#A2單元格輸入Excel?&函數(shù),求A1單元格文本與“ABC”合并后結(jié)果PS:如果打印有公式的單元格的值,只會是打印公式的內(nèi)容,而不是公式計算出來的值,目前暫時還無法從程序中直接獲取計算后的值。如打印上面例子中A1單元格的值,就還是公式內(nèi)容。
獲取單元格的所在行數(shù)
cellrow = cell.row獲取單元格的所在列數(shù)
cellcol = cell.column獲取單元格的所在Excel坐標(biāo)
cellcoordinate = cell.coordinate多個單元格賦值(一)
for?i?in?range?(1,6):??? for j in range (1,5):????????ws.cell(i,j).value?=?i+j?#給從第一行到第五行中的第一列到第四列的單元格中賦值#for x in range(m,n):是一個非常常用而且簡單的循環(huán)語句,基本用法可以參照上面程序多個單元格操作(二)----iter_rows函數(shù)
for row in ws.iter_rows(min_row=1, max_col=3, max_row=3): #定義行列范圍 for cell in row: print(cell) #輸出單元格信息 cell.value = cell.row + cell.column #將單元所在的行數(shù)與列數(shù)之和賦值給單元格從打印的單元格信息可以看出,iter_rows函數(shù)是逐行處理數(shù)據(jù),第一行的數(shù)據(jù)處理完后,再處理第二行。
多個單元格操作(三)----iter_cols函數(shù)
for col in ws.iter_cols(min_col=1, max_row=3, max_col=3): #定義行列范圍 for cell in col: print(cell) #輸出單元格信息 cell.value = cell.row + cell.column #將單元所在的行數(shù)與列數(shù)之和賦值給單元格從打印的單元格信息可以看出,iter_cols函數(shù)是逐列處理數(shù)據(jù),第一列的數(shù)據(jù)處理完后,再處理第二列。
實例
寫一個簡單的實例,創(chuàng)建一個Excel表格,然后在表格中分別創(chuàng)建三個sheet 工作表,并給sheet工作表中單元格賦值。以下是代碼:
from openpyxl import Workbook #從openpyxl 庫中導(dǎo)入Workbook模塊import os #導(dǎo)入os 庫,python標(biāo)準(zhǔn)庫不需要安裝wb = Workbook() #新建表格ws1 = wb.active #定義ws1ws1.title = "trial 1"for col in ws1.iter_cols(min_col=1, max_row=3, max_col=3): #定義行列范圍 for cell in col: cell.value = cell.row #將單元所在的行數(shù)與列數(shù)之和賦值給單元格ws2 = wb.create_sheet("Trial 2", 1) #創(chuàng)建ws2for row in ws2.iter_rows(min_row=1, max_col=3, max_row=3): #定義行列范圍 for cell in row: cell.value = cell.coordinate #將單元所在的坐標(biāo)賦值給單元格ws3 = wb.create_sheet("Trial 3", 2) #創(chuàng)建ws3for i in range (1,6): for j in range (1,5): ws3.cell(i,j).value = i+j #給從第一行到第五行中的第一列到第四列的單元格中賦值wb.save('D:\Trial.xlsx') #保存表格os.startfile('D:\Trial.xlsx') #打開上一步保存的表格To Be?Continued關(guān)注公眾號”Start Python“,一起學(xué)習(xí)Python開發(fā)
總結(jié)
以上是生活随笔為你收集整理的openpyxl模块_Openpyxl让Excel飞(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云鹊医认证审核需要多久_ISO9001质
- 下一篇: python excel取列_pytho