學(xué)會(huì)python操作excel永不加班系列
實(shí)驗(yàn)環(huán)境:
系統(tǒng):win10
語(yǔ)言:python3.8
承載軟件:pycharm2021.1.2 (Professional Edition)
第三方類庫(kù):openpyxl、xlrd
一、第三方類庫(kù)介紹
xlrd庫(kù)是一個(gè)很常用的讀取excel文件的庫(kù),其對(duì)excel文件的讀取可以實(shí)現(xiàn)比較精細(xì)的控制。
openpyxl是實(shí)現(xiàn)excel的寫入操作的第三方類庫(kù)
二、安轉(zhuǎn)第三方類庫(kù)
pip install xlrd==1.2.0 #此處一定要安轉(zhuǎn)這個(gè)版本的xlrd,新版的xlrd可能會(huì)出現(xiàn)不兼容xlsx后綴文件的情況
pip install openpyxl
三、引用xlrd讀取excel數(shù)據(jù)
首先我先來(lái)選取一個(gè)測(cè)試的數(shù)據(jù),因?yàn)樵谥皩戇^(guò)Numpy和pandas的操作我們可以直接生成一個(gè)名為“test.xlsx”的文件。點(diǎn)擊此處獲取知識(shí)鏈接
因?yàn)楣ぷ髦写蟛糠秩说膃xcel并不像此處如此完美所以不可以直擊使用pandas庫(kù)進(jìn)行操作,結(jié)合工作中的實(shí)際情況自行斟酌使用
import numpy as np
import pandas as pd
df = pd.DataFrame(data=np.random.randint(1,90,size=[10,3]),columns=['日用戶','日銷售額','日成本'])
df.to_excel('test.xlsx')

導(dǎo)入xlrd包并讀取數(shù)據(jù)

import xlrd
#選中要讀取的excel文件
test1 = xlrd.open_workbook('test.xlsx')
# 根據(jù)sheet索引獲取sheet頁(yè) 0表示1 1表示2 以此類推
sheet = test1.sheet_by_index(0)
# 根據(jù)sheet名稱獲取sheet頁(yè) 0表示1 1表示2 以此類推
sheet1 = test1.sheet_by_name('Sheet1')
# 打印工作表的名稱、行數(shù)和列數(shù)
print("打印工作表的名稱、行數(shù)和列數(shù):")
print('名稱:',sheet.name, '行數(shù):',sheet.nrows,'列數(shù):', sheet.ncols)
# 選中列
col = sheet.col_values(2)
print('col',col)
# 選中行
row = sheet.row_values(2)
print('row',row)
# 根據(jù)行索引選定列 注意row()中以1開(kāi)始 []中以0開(kāi)始
print(sheet.row(1)[2].value)

四、引入openpyxl寫入數(shù)據(jù)
import openpyxl
# 選中寫入的excel文件
workbook=openpyxl.load_workbook('test.xlsx')
# 選中將要寫入的sheet頁(yè)
sheets = workbook["Sheet1"]
# 給第一個(gè)單元格寫入數(shù)據(jù);
sheets["A1"] = "黑龍江省"
# 設(shè)置字體為紅色;字體大??;字體為粗體;字體為斜體
from openpyxl.styles import Font,colors
sheets["A1"].font = Font(color='981818',size = 15,bold = True,italic = True,)
# 獲取第一個(gè)單元格的內(nèi)容;
print(sheets["A1"].value)
# 給任意一個(gè)單元格賦值
sheets.cell(2,1,value = "江蘇省")# 保存數(shù)據(jù),如若名稱存在就覆蓋 否則新建文件
workbook.save('更改后輸出.xlsx')
效果如圖

此處知識(shí)異常簡(jiǎn)單需要基本的語(yǔ)句操作練習(xí)即可可游刃有余。
下面推薦一個(gè)今天遇到的問(wèn)題胡亂寫了個(gè)demo
import openpyxl
import xlrd
# op選中文件
workbook1=openpyxl.load_workbook('test1.xlsx')
sheets=workbook1['Sheet1']
# xlrd選中文件
book = xlrd.open_workbook("test1.xlsx")
# 選中sheet1
sheet = book.sheet_by_index(0)
# 單位列
dw = sheet.col_values(2)
# 數(shù)量列
nb = sheet.col_values(1)
print(dw)
# 若單位為0則乘以10000否則不變
for i in range(len(dw)):
if dw[i]==0:
data = sheets.cell(i+1, 2).value=nb[i]*10000
else:
data = sheets.cell(i+1, 2).value = nb[i]
print(data)
# 刪除單位(第三)列
sheets.delete_cols(3)
# 覆蓋保存原數(shù)據(jù)
workbook1.save('test1.xlsx')
操作前
操作后

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python numpy中的polyfit函數(shù)用法
這篇文章主要介紹了python numpy中的polyfit函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
Python基于TensorFlow接口實(shí)現(xiàn)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)回歸
這篇文章主要為大家詳細(xì)介紹了如何基于Python語(yǔ)言中TensorFlow的tf.estimator接口,實(shí)現(xiàn)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)回歸的具體方法,感興趣的可以了解一下2023-02-02
Python 3.8新特征之a(chǎn)syncio REPL
我最近都在寫一些Python 3.8的新功能介紹的文章,在自己的項(xiàng)目中也在提前體驗(yàn)新的Python版本。這篇文章主要介紹了Python 3.8新特征之a(chǎn)syncio REPL,需要的朋友可以參考下2019-05-05
基于opencv的selenium滑動(dòng)驗(yàn)證碼的實(shí)現(xiàn)
這篇文章主要介紹了基于opencv的selenium滑動(dòng)驗(yàn)證碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Pytest單元測(cè)試框架如何實(shí)現(xiàn)參數(shù)化
這篇文章主要介紹了Pytest單元測(cè)試框架如何實(shí)現(xiàn)參數(shù)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Flask框架學(xué)習(xí)筆記之消息提示與異常處理操作詳解
這篇文章主要介紹了Flask框架學(xué)習(xí)筆記之消息提示與異常處理操作,結(jié)合實(shí)例形式分析了flask框架表單登陸消息提示、錯(cuò)誤模板調(diào)用及異常處理相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
python3?requests中文亂碼之壓縮格式問(wèn)題解析
這篇文章主要介紹了python3?requests中文亂碼問(wèn)題之壓縮格式問(wèn)題,我們?cè)谂老x(chóng)時(shí),經(jīng)常會(huì)遇見(jiàn)中文亂碼問(wèn)題,之前都是編碼格式的問(wèn)題,很少遇見(jiàn)由于壓縮格式造成的編碼混亂問(wèn)題,特記錄下,需要的朋友可以參考下2022-08-08
Python OpenCV實(shí)現(xiàn)基于模板的圖像拼接
基于特征點(diǎn)的圖像拼接如果是多張圖,每次計(jì)算變換矩陣,都有誤差,最后可以圖像拼完就變形很大,基于模板的方法可以很好的解決這一問(wèn)題,本文就來(lái)和大家具體聊聊2022-10-10

