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