python下载晚上excel_Python自动操控excel,一小时解决你一天的工作
過(guò)去,在很多金融、市場(chǎng)、行政的招聘中,面試官都會(huì)問(wèn)一句:“你精通 EXCEL 嗎?”
但今天,他們可能更喜歡問(wèn):“你會(huì) Python 嗎?”
越來(lái)越多的企業(yè)開始用 Python 處理數(shù)據(jù),特別是金融、證券、商業(yè)、互聯(lián)網(wǎng)等領(lǐng)域。在頂級(jí)公司的高端職位中,Python 更是成為了標(biāo)配:
Python 究竟有什么法力能讓大家如此青睞?
舉個(gè)例子:
在過(guò)去,如果老板想要獲取 A 股所有股票近 2 年的數(shù)據(jù),你可能需要 查詢-下載-記錄到excel 循環(huán)數(shù)百次,即使你是一個(gè)沒有感情的復(fù)制機(jī)器人,也需要一兩天的時(shí)間。
但如果你掌握了 Python,只需要寫個(gè)腳本,泡杯咖啡的功夫數(shù)據(jù)就全部下載好了。再加上 Python 強(qiáng)大的繪圖功能,你可以一次性完成 數(shù)據(jù)收集 — 整理 — 分析 — 繪圖的過(guò)程,直接把分析結(jié)果用圖表呈現(xiàn)出來(lái)。
今天本篇文章,我們就總結(jié)了一下利用 python 操作 Excel 文件的第三方庫(kù)和方法。
首先,我們來(lái)學(xué)習(xí)一下,如何 用 Python 創(chuàng)建和保存 Excel 文檔。
對(duì)于經(jīng)常與數(shù)據(jù)打交道的人來(lái)說(shuō),Excel 是經(jīng)常使用的工具;對(duì)于與數(shù)據(jù)打交道的程序員來(lái)說(shuō),OpenPyXL 庫(kù)是一個(gè)利器。Python 官方提供了這樣一個(gè)庫(kù),讓我們可以直接通過(guò) Python 代碼實(shí)現(xiàn)對(duì) Excel 文件的操作,操作文件格式包括 xlsx、xlsm、xltx、xltm。
知識(shí)點(diǎn)
創(chuàng)建/打開工作簿
訪問(wèn)工作表單元及其值
保存工作表
讓我們先來(lái)學(xué)習(xí)簡(jiǎn)單的創(chuàng)建和保存功能。
創(chuàng)建/打開工作簿
首先,下載實(shí)驗(yàn)所需 shiyanlou.xlsx 示例文件,同時(shí)安裝指定版本的 openpyxl 庫(kù)。
!wget -nc "https://labfile.oss.aliyuncs.com/courses/1585/shiyanlou.xlsx"
!pip install openpyxl==3.0.3
使用 openpyxl 不需要在文件系統(tǒng)上創(chuàng)建文件,只需導(dǎo)入 Workbook 類并開始工作:
教學(xué)代碼:
from openpyxl import Workbook
?
wb = Workbook() # 實(shí)例化一個(gè)工作簿對(duì)象
?
print(wb)
也可以打開本地已有的工作簿進(jìn)行實(shí)驗(yàn)操作:
from openpyxl import load_workbook
?
wb = load_workbook(filename='shiyanlou.xlsx')
?
print(wb)
load_workbook 中可以使用以下幾個(gè)參數(shù):
data_only:帶有公式的單元格是否具有公式(默認(rèn)具有)或上一次 Excel 讀取工作表時(shí)存儲(chǔ)的值。
keep_vba:設(shè)置是否保留任何 Visual Basic 元素(默認(rèn)保留),可選擇保留但是不支持編輯。
工作簿創(chuàng)建時(shí)總是會(huì)默認(rèn)創(chuàng)建一個(gè)名為 Sheet 工作表,可以通過(guò)使用Workbook.active 屬性獲取:
ws = wb.active # 獲取當(dāng)前活躍的工作表
print(ws)
也可以通過(guò) Workbook.create_sheet() 創(chuàng)建工作表并命名,若不設(shè)置名字參數(shù)則默認(rèn)命名為 sheet,sheet1,sheet2...創(chuàng)建的工作表位置默認(rèn)總是插入到最后:
ws = wb.create_sheet() # sheet
ws1 = wb.create_sheet("Mysheet") # 命名為 Mysheet
ws2 = wb.create_sheet("Mysheet1", 0) # 新建 Mysheet1 工作表插入到第一個(gè)位置
ws3 = wb.create_sheet("Mysheet2", -1) # 新建 Mysheet2 工作表插入到倒數(shù)第二個(gè)的位置
ws.title = "shiyanlou" # 將上述 ws 工作表重命名為 shiyanlou
?
print("Success")
默認(rèn)情況下,工作表的標(biāo)簽背景顏色為白色。我們可以通過(guò)Worksheet.sheet_properties.tabColor 屬性改變顏色:
ws.sheet_properties.tabColor = "1072BA" # RGB 格式
print(ws.sheet_properties.tabColor)
我們給工作表取名后,可以把它作為該工作簿的一個(gè)鍵,簡(jiǎn)化后續(xù)代碼,例如:
ws = wb["shiyanlou"]
print(ws)
若想查看該工作簿下的所有工作表,可以通過(guò)函數(shù) Workbook.sheetname:
print(wb.sheetnames)
也可以通過(guò)迭代的方式打印所有工作表
for sheet in wb:
print(sheet.title)
我們可以通過(guò) Workbook.copy_worksheet() 方法在單個(gè)工作簿中創(chuàng)建工作表的副本:
source = wb.active # 獲取活躍的工作表
target = wb.copy_worksheet(source) # 上述獲取的工作表為其創(chuàng)建副本
?
print(target)
訪問(wèn)工作表單元及其值
前面我們已經(jīng)知道了如何創(chuàng)建獲取工作簿及工作表,接下來(lái)我們將學(xué)習(xí)修改單元格的內(nèi)容。以下操作基于 shiyanlou.xlsx 工作簿中的 shiyanlou 工作表進(jìn)行。
單元格可以直接作為工作表的鍵進(jìn)行訪問(wèn)賦值,用 value 屬性進(jìn)行值訪問(wèn):
c = ws['A4'] # 將訪問(wèn) A4 單元格
ws['A4'] = 4 # 對(duì) A4 單元格進(jìn)行賦值
?
c.value # 訪問(wèn) A4 單元格的值,同 ws['A4'].value
注意:在內(nèi)存中創(chuàng)建工作表時(shí),它不包含任何單元格,單元格都是在首次訪問(wèn)時(shí)自動(dòng)創(chuàng)建的。
以上代碼也可以通過(guò)更簡(jiǎn)便的代碼實(shí)現(xiàn):
d = ws.cell(row=4, column=2, value=10) # B4 進(jìn)行賦值
?
ws['B4'].value # 訪問(wèn)單元格的值
訪問(wèn)多個(gè)單元格
可以使用切片訪問(wèn)范圍為 A1 到 C2 的所有單元格:
cell_range = ws['A1':'C2']
?
cell_range
行或列的范圍可以類似地獲得:
# 訪問(wèn)列
colC = ws['C']
col_range = ws['C:D']
?
# 訪問(wèn)行
row10 = ws[10]
row_range = ws[5:10]
?
print(col_range, row_range)
也可以使用 Worksheet.iter_rows() 返回行:
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
for cell_row in row:
print(cell_row)
使用 Worksheet.iter_cols() 返回列:
for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
for cell_col in col:
print(cell_col)
如果需要遍歷工作表的所有行或列,則可以使用 Worksheet.rows 屬性。出于性能原因,該屬性在只讀模式下不可用:
ws['C9'] = 'hello world'
tuple(ws.rows)
或者使用 Worksheet.columns 屬性。出于性能原因,該屬性在只讀模式下不可用:
tuple(ws.columns)
訪問(wèn)值
如果只需要工作表中的值,則可以使用該 Worksheet.values 屬性。
遍歷工作表中的所有行,但僅返回單元格值:
for row in ws.values:
for value in row:
print(value)
Worksheet.iter_rows() 和 Worksheet.iter_cols() 可以用 values_only 參數(shù),只返回單元格的值:
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
print(row)
保存工作表
將我們之前創(chuàng)建的工作簿保存格式為 xlsx 的文件,若已存在則覆蓋:
wb.save("shiyanlou.xlsx")文源網(wǎng)絡(luò),僅供學(xué)習(xí)之用,如有侵權(quán),聯(lián)系刪除。
我將優(yōu)質(zhì)的技術(shù)文章和經(jīng)驗(yàn)總結(jié)都匯集在了我的公眾號(hào)【Python圈子】里。
在學(xué)習(xí)Python的道路上肯定會(huì)遇見困難,別慌,我這里有一套學(xué)習(xí)資料,包含40+本電子書,600+個(gè)教學(xué)視頻,涉及Python基礎(chǔ)、爬蟲、框架、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等,不怕你學(xué)不會(huì)!
總結(jié)
以上是生活随笔為你收集整理的python下载晚上excel_Python自动操控excel,一小时解决你一天的工作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: springbboot加密打包_Spri
- 下一篇: dao层如何调用对象_你的项目应该如何正