openpyxl 模块的使用
生活随笔
收集整理的這篇文章主要介紹了
openpyxl 模块的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
openpyxl模塊簡介:
是用于解決Excel(WPS等均可使用)中擴展名為xlsx/xlsm/xltx/xltm的文件讀寫的第三方庫。xls文件要使用xlwt 、wlrd兩個模塊。
核心概念:
Workbooks,Sheets,Cells。Workbook就是一個excel工作簿;Sheet是工作簿中的一張工作表;Cell就是表的一個單元格。
openpyxl不管讀寫都是:打開Workbook,定位Sheet,操作Cell。
代碼示例:
from openpyxl import Workbook
#創建一個工作薄
wb=Workbook()
# 激活 worksheet
wb.active
#將新創建的EXCLE保存
wb.save(r'E:ETL平臺陳淘淘.xlsx')
==
sheets集合下標從0開始,即第一張表為sheets[0],這里test2的第一個工作表名稱:Sheet1
sht = wb.sheets[0]
示例1:
from openpyxl import Workbook
local=r'E:ETL平臺gina_test33.xlsx'# 指定文件路徑
wb=Workbook('gaokexintest') # 指定文件名稱
ws = wb.create_sheet('1月') # sheet名稱
wb.save(local) # 保存
示例2:
# coding: utf-8
"""
# @Time : 2021/2/1 15:05
# @Author : Gina Gao
# @File :
# @Software: PyCharm
# @Descript:
"""
import datetime
from random import choice
from time import time
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
# 設置文件 mingc
addr = r'E:ETL平臺陳淘淘11.xlsx'
# 打開文件
wb = load_workbook(addr)
# 創建一張新表
# ws = wb.create_sheet()
# 第一行輸入
ws = wb['Mysheet']
ws.append(['TIME', 'TITLE', 'A-Z'])
# 輸入內容(500行數據)
for i in range(500):
# TIME = datetime.datetime.now().strftime("%H:%M:%S")
TIME=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
TITLE = str(time())
A_Z = get_column_letter(choice(range(1, 50)))
ws.append([TIME, TITLE, A_Z])
# 獲取最大行
row_max = ws.max_row
# 獲取最大列
con_max = ws.max_column
# 把上面寫入內容打印在控制臺
for j in ws.rows: # we.rows 獲取每一行數據
for n in j:
print(n.value, end=" ") # n.value 獲取單元格的值
print()
# 保存,save(必須要寫文件名(絕對地址)默認 py 同級目錄下,只支持 xlsx 格式)
wb.save(addr)
新建execle,或是打開excel 并進行增、減 操作 學習網址 https://www.bilibili.com/video/BV1L5411W7wD?p=3&spm_id_from=pageDriver
import openpyxl as vb
local=r'E:ETL平臺gina_test33.xlsx'# 指定文件路徑
wb=vb.load_workbook(local)#工作簿
# print(wb.sheetnames)#打印sheet名稱
# wb.sheetnames
# ws=wb.active #當前sheet 默認名稱
# wss=wb['1月']
"""# 遍歷sheet名稱
wks=wb.worksheets
for i in wks:
print(i.title)#工作表的名稱
"""
#等價
"""# 遍歷sheet名稱
wksn=wb.sheetnames
for i in wksn:
print(i)
"""
# wb.remove(wss)#工作簿中刪除工作表
# wb.save(local)
print(wb.sheetnames)
#復制工作表
ws_copy=wb.copy_worksheet(wb['3月'])
# ws_copy.title='8月' #復制工作表并賦予新的工作表名
wb.save(local)
新建excel .批量創建工作簿
import openpyxl as vb
local=r'E:ETL平臺gina_loop.xlsx'# 指定文件路徑
wb=vb.Workbook()#新建EXECL文檔
for i in range(1,11,2):#創建10個工作表,2是步長
wb.create_sheet('2021年2月'+ str(i) +'日')#i是數字,需轉換為字符串
wb.save(local)
批量更改工作簿名稱
# coding: utf-8
"""
# @Time : 2021/2/1 17:46
# @Author : Gina Gao
# @File :
# @Software: PyCharm
# @Descript:批量更改工作簿名稱
"""
import openpyxl as vb
local=r'E:ETL平臺gina_loop.xlsx'# 指定文件路徑
wb=vb.load_workbook(local)
sn=wb.sheetnames
sn1=wb.worksheets
"""
for i in sn1:
print(i.title)
i.title='北京'+'-'+i.title
wb.save(local1)
"""
#等價
"""
for i in sn:
wb[i].title='北京'+'-'+i
print(i)
wb.save(local)
"""
刪除工作簿
import openpyxl as vb
local=r'E:ETL平臺gina_loop.xlsx'# 指定文件路徑
wb=vb.load_workbook(local)
print(wb.sheetnames)
for i in wb:
print(i.title.split("-"))
if i.title.split("-")[0]=='上海':#split("-") 用-進行分隔,分隔后 從0開始 上海-2021年 , ['上海','2021年']
wb.remove(wb[i.title])
wb.save(local)
wb.close()
批量復制模板
import openpyxl as vb
local=r'E:ETL平臺gina_area.xlsx'# 指定文件路徑
local11=r'E:ETL平臺gina_area_copy.xlsx'# 指定文件路徑
wb=vb.load_workbook(local)
for i in range(1,11,1):
sht_copy=wb.copy_worksheet(wb['地區模板'])
sht_copy.title='2021年'+'2月'+str(i)+'日'
wb.save(local11)
獲取值定單元格值
import openpyxl as vb
local=r'E:ETL平臺gina_area.xlsx'# 指定文件路徑
local11=r'E:ETL平臺gina_area_copy.xlsx'# 指定文件路徑
wb=vb.load_workbook(local11)
ws=wb['2021年2月1日']
for i in range(1,10,1):
print(i,ws.cell(row=i,column=2).value)
print(ws['A1'].value)
獲取行、列
import openpyxl as vb
local=r'E:ETL平臺gina_area.xlsx'# 指定文件路徑
local11=r'E:ETL平臺gina_area_copy.xlsx'# 指定文件路徑
wb=vb.load_workbook(local11)
print(wb.sheetnames)
ws=wb['地區模板']
# 范圍=ws.iter_rows(min_row=1,max_row=10,min_col=1,max_col=3)
#行
# for 行 in ws.rows:
# for 單元格 in 行:
# print(單元格.value)
for 列 in ws.columns:
for 單元格 in 列:
print(單元格.value)
# print(list(ws.values)) # t=ws.dimensions #查看工作表區域大小 # print(ws.values) # Range=ws[t]#單元格區域 一行一行取值 #Range=ws['A:C']#單元格區域按列取值 # Range=ws['A1:G20']#單元格區域按列取值 # for row_ in Range: # for col_ in row_: # print(col_.value)
# 根據列的數字返回字母或字母返回列的數字
import openpyxl as vb
數字轉字母=vb.utils.get_column_letter(5)
print(數字轉字母)
字母轉數字=vb.utils.column_index_from_string('Z')
print(字母轉數字)
####等價于
from openpyxl.utils import get_column_letter,column_index_from_string
# 根據列的數字返回字母
print(get_column_letter(2)) # B
# 根據字母返回列的數字
print(column_index_from_string('D')) # 4
#動態讀數據
#動態讀數據
import openpyxl as vb
路徑=r'E:ETL平臺gina_test.xlsx'
工作簿=vb.load_workbook(路徑)
# print(工作簿.sheetnames)
工作表=工作簿['Sheet1']
# print(工作表.dimensions)#表范圍
#A1:D6
最大行=工作表.max_row #6
最大列=工作表.max_column#4
print(最大行,最大列)
A1單元格的值=工作表['A1'].value #等價于 工作表.cell(1,1).value
print(A1單元格的值)
A1單元格的行=工作表['A1'].row
print(A1單元格的行)
A1單元格的列=工作表['A1'].column
print(A1單元格的列)
#獲取D列值
列表=[]
for i in 工作表['D']:
#print(i,i.value)
列表.append(i.value)
#PS 想要加減乘除一定要放到列表中操作,可以用切片
print(列表)#['英語', 80, 90, 100, 110, 120]
print(列表[1:])#[80, 90, 100, 110, 120] 切片從第二位開始
print(sum(列表[1:]))#列相加
列表1=[]
for i in 工作表[2]:# 表頭一行 工作表[1]
print(i.value)
列表1.append(i.value)
print(sum(列表1[1:]))#列相加
總結
以上是生活随笔為你收集整理的openpyxl 模块的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据恢复(Data recovery)
- 下一篇: SAM4E单片机之旅——20、DMAC之