學會python操作excel永不加班系列
實驗環(huán)境:
系統(tǒng):win10
語言:python3.8
承載軟件:pycharm2021.1.2(Professional Edition)
第三方類庫:openpyxl、xlrd
一、第三方類庫介紹
xlrd庫是一個很常用的讀取excel文件的庫,其對excel文件的讀取可以實現(xiàn)比較精細的控制。
openpyxl是實現(xiàn)excel的寫入操作的第三方類庫
二、安轉第三方類庫
pip install xlrd==1.2.0 #此處一定要安轉這個版本的xlrd,新版的xlrd可能會出現(xiàn)不兼容xlsx后綴文件的情況
pip installopenpyxl
三、引用xlrd讀取excel數(shù)據(jù)
首先我先來選取一個測試的數(shù)據(jù),因為在之前寫過Numpy和pandas的操作我們可以直接生成一個名為“test.xlsx”的文件。點擊此處獲取知識鏈接
因為工作中大部分人的excel并不像此處如此完美所以不可以直擊使用pandas庫進行操作,結合工作中的實際情況自行斟酌使用
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')

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

import xlrd
#選中要讀取的excel文件
test1 = xlrd.open_workbook('test.xlsx')
# 根據(jù)sheet索引獲取sheet頁 0表示1 1表示2 以此類推
sheet = test1.sheet_by_index(0)
# 根據(jù)sheet名稱獲取sheet頁 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開始 []中以0開始
print(sheet.row(1)[2].value)

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

此處知識異常簡單需要基本的語句操作練習即可可游刃有余。
下面推薦一個今天遇到的問題胡亂寫了個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')
操作前

操作后

總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注本站的更多內(nèi)容!
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
關注官方微信