Python辦公之Excel篇

1.準備環境

Python版本:3.6.5

IDE集成開發環境:pycharm

Python庫選擇:openpyxl

openpyxl操作的excel文件以xlsx結尾。

基礎命令

查看 Python 版本

python --version

查看 pip 版本

pip --version

安裝openxlsx

 pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.打開保存

使用 openpyxl 創建,并保存一個 excel 文件

from openpyxl import Workbookwb = Workbook()
ws = wb.active
print(ws.title)wb.save(r"C:\Users\Dell\Desktop\PDF\test.xlsx")

打開剛才保存的文件

from openpyxl import Workbook, load_workbookwb = load_workbook(r"C:\Users\Dell\Desktop\PDF\test.xlsx")
ws = wb.active
print(ws.title)

3.操作工作表

創建

ws1 = wb.active
# 查看當前工作表名
print(ws1.title)
# 查看所有的工作表名
# print(wb.get_sheet_names())
# 查看所有的工作表名
print(wb.sheetnames)ws2 = wb.create_sheet('Sheet2', 1)
ws3 = wb.create_sheet('Sheet3', 2)print(wb.sheetnames)ws4 = wb['Sheet3']
print(ws4.title)

運行后,控制臺打印如下結果

Sheet
['Sheet']
['Sheet', 'Sheet2', 'Sheet3']
Sheet3

移動

from openpyxl import Workbookwb = Workbook()ws1 = wb.active
# 查看當前工作表名
print(ws1.title)
# 查看所有的工作表名
# print(wb.get_sheet_names())
# 查看所有的工作表名
print(wb.sheetnames)ws2 = wb.create_sheet('Sheet2', 1)
ws3 = wb.create_sheet('Sheet3', 2)# move_sheet移動工作表
# 參數offset代表偏移值,-1向前移動一個位置,1代表向后移動一個位置,以此類推。
wb.move_sheet(ws3, -1);# del wb['Sheet3']print(wb.sheetnames)

運行后,控制臺打印如下結果,Sheet3移動到了Sheet2前面

Sheet
['Sheet']
['Sheet', 'Sheet3', 'Sheet2']

刪除

del wb['Sheet3']

4.訪問單元格

寫入單元格的值

from openpyxl import Workbookwb = Workbook()
ws = wb.activews['a6'] = '池田依來沙'
wb.save("test.xlsx")

修改單元格的值

from openpyxl import Workbookwb = Workbook()
ws = wb.active# ws['a6'] = '池田依來沙'# cell方法的入參
# 譬如6就是row,代表第幾行
# 譬如1就是column,代表第幾列
cell = ws.cell(6, 1, "Malena")cell.value = 'morgan'
print(cell.value)
wb.save("test.xlsx")
from openpyxl import Workbookwb = Workbook()
ws = wb.active# ws['a6'] = '池田依來沙'# cell方法的入參
# 譬如6就是row,代表第幾行
# 譬如1就是column,代表第幾列
cell = ws.cell(6, 1, "Malena")cell.value = 'morgan'
print(cell.value)
# coordinate 代表單元格的坐標,譬如 A6
print(cell.coordinate)
# row,代表第幾行
print(cell.row)
# column,代表第幾列
print(cell.column)
# col_idx,代表第幾列
print(cell.col_idx)
# 第幾列,用字母表示,譬如第一列為A
print(cell.column_letter)wb.save("test.xlsx")

循環遍歷,以及打印單元格

from openpyxl import Workbookwb = Workbook()
ws = wb.activex = 1
for i in range(1, 11):for j in range(1, 6):ws.cell(i, j, x)x += 1
# 打印出A列到C列
print(ws["a:c"])
# 打印出第1行到第5行
print(ws["1:5"])
# 打印出a1到c4
print(ws["a1:c4"])
# 打印出第1行
print(ws["1"])
# 打印出字母C列表
print(ws["c"])
from openpyxl import Workbookwb = Workbook()
ws = wb.active# ws['a6'] = '池田依來沙'# cell方法的入參
# 譬如6就是row,代表第幾行
# 譬如1就是column,代表第幾列
# cell = ws.cell(6, 1, "Malena")
#
# cell.value = 'morgan'
# print(cell.value)
# # coordinate 代表單元格的坐標,譬如 A6
# print(cell.coordinate)
# # row,代表第幾行
# print(cell.row)
# # column,代表第幾列
# print(cell.column)
# # col_idx,代表第幾列
# print(cell.col_idx)
# # 第幾列,用字母表示,譬如第一列為A
# print(cell.column_letter)x = 1
for i in range(1, 11):for j in range(1, 6):ws.cell(i, j, x)x += 1for cells in ws["a1:c4"]:for cell in cells:print(cell)print(cell.value)

5.操作單元格

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
x = 1
for i in range(1, 11):for j in range(1, 11):ws.cell(i, j, x)x +=1# 合并單元格 merge_cells 方法
ws.merge_cells("b2:d4")
# 取消合并 unmerge_cells 方法
ws.unmerge_cells("b2:d4")# 插入列,入參兩個,分別代表從第幾列開始,插入幾列
ws.insert_cols(2, 3)
# 插入行,入參兩個,分別代表從第幾行開始,插入幾行
ws.insert_rows(1, 2)
# 刪除列,入參兩個,分別代表從第幾列開始,刪除幾列
ws.delete_cols(6, 2)
# 刪除行,入參兩個,分別代表從第幾行開始,刪除幾行
ws.delete_rows(6, 3)
# 移動單元格,入參三個:選中的單元格,上下移動(正數為下,負數為上),左右移動(正數為右,負數為左)
ws.move_range("c4:e5", 2, -2)wb.save("test.xlsx")

6.使用公式

from openpyxl import Workbook
from openpyxl.formula.translate import Translator
from openpyxl.utils import FORMULAEwb = Workbook()
ws = wb.activeprint(len(FORMULAE))
print('SUM' in FORMULAE)ws.append(["價格1", "價格2", "求和", "平均值"])
ws.append([95,27])
ws.append([48,31])
ws.append([11,23])# 價格1  價格2    求和 平均值
# 95   27
# 48   31
# 11   23# 求和
ws["c2"] = "=SUM(A2,B2)"
# 平均值
ws["d2"] = "=AVERAGE(A2,B2)"# 翻譯 Translator 方法ws["c3"] = Translator(formula="=SUM(A2,B2)", origin="c2").translate_formula("c3")
ws["c4"] = Translator(formula="=SUM(A2,B2)", origin="c2").translate_formula("c4")ws["d3"] = Translator(formula="=AVERAGE(A2,B2)", origin="d2").translate_formula("d3")
ws["d4"] = Translator(formula="=AVERAGE(A2,B2)", origin="d2").translate_formula("d4")# 價格1  價格2    求和 平均值
# 95   27     122    61
# 48   31     79 39.5
# 11   23     34 17# 循環遍歷
for cell in ws["c3:c4"]:print(cell)
# 打印得到一個元組,例如:(<Cell 'Sheet'.C3>,)cell[0].value = Translator(formula="=SUM(A2,B2)", origin="c2").translate_formula(cell[0].coordinate)wb.save("test.xlsx")

7.設置樣式

from openpyxl import Workbook
from openpyxl.styles import Font, Alignmentwb = Workbook()
ws = wb.activews["a1"] = "池田依來沙"f = Font(name="微軟雅黑", size=42, color="F56C6C", bold=True, italic=True, strike=True, underline="double")
ws["a1"] .font = f# 設置行高
ws.row_dimensions[2].height = 100
# 設置列寬
ws.column_dimensions["B"].width = 50# 水平和垂直的布局位置,旋轉,是否需要換行,是否自動適配縮小,縮進的值
a = Alignment(horizontal="left", vertical="top", text_rotation=0, wrap_text=True, shrink_to_fit=False, indent=0)
ws["a1"].alignment = a;wb.save("test.xlsx")

8.過濾和排序

from openpyxl import Workbookwb = Workbook()
ws = wb.activerows = [['名稱', '顏值', '身材', '價值'],['mila', '80', '90', '99'],['malena', '80', '90', '96'],['morgan', '100', '90', '99'],['sf', '80', '20', '97'],['ac', '30', '90', '92'],
]for row in rows:ws.append(row)# 設置過濾范圍
ws.auto_filter.ref = "a1:d7"# 過濾方法 add_filter_column 入參:第幾列(從2開始),過濾條件
ws.auto_filter.add_filter_column(0, ["mila", "malena"])
# 排序方法 入參: 范圍,排序方式(False升序,True倒序)
ws.auto_filter.add_sort_condition("c2:d6", True)wb.save('test.xlsx')

注意,add_filter_column和add_sort_condition方法并不會直接執行排序,需要打開excel文件后,在篩選和排序上點擊確認才能真正的執行。

通過安裝第三方庫,譬如pandas可以直接執行排序和篩選的操作

安裝

pip install pandas 

pandas 的使用

import pandas as pd
df = pd.read_excel('test.xlsx', sheet_name="Sheet")
# ascending True代表升序 ,False代表倒序
df_value = df.sort_values(by=["顏值","身材"], ascending=True)writer = pd.ExcelWriter("test2.xlsx")
df_value.to_excel(writer,sheet_name="Sheet2", index=False)
writer.save()

9.插入圖表

“https://openpyxl.readthedocs.io/en/stable/charts/introduction.html”)

from openpyxl import Workbook
from openpyxl.chart import LineChart, Referencewb = Workbook()
ws = wb.active# 準備數據
rows = [['月份', '桃子', '西瓜', '龍眼'],[1, 38, 28, 29],[2, 52, 21, 35],[3, 39, 20, 69],[4, 51, 29, 41],[5, 29, 39, 31],[6, 30, 41, 39],
]
for row in rows:ws.append(row)# 創建圖表
c1 = LineChart()
c1.title = "折線圖"  # 標題
c1.style = 13  # 樣式
c1.y_axis.title = '銷量'  # Y軸
c1.x_axis.title = '月份'  # X軸# 選擇數據范圍
data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
c1.add_data(data, titles_from_data=True)# 線條樣式
s0 = c1.series[0]
s0.marker.symbol = "triangle"  # triangle為三角形標記, 可選circle、dash、diamond、dot、picture、plus、square、star、triangle、x、auto
s0.marker.graphicalProperties.solidFill = "FF0000"  # 填充顏色
s0.marker.graphicalProperties.line.solidFill = "0000FF"  # 邊框顏色
# s0.graphicalProperties.line.noFill = True  # 改為True則隱藏線條,但顯示標記形狀s1 = c1.series[1]
s1.graphicalProperties.line.solidFill = "00AAAA"
s1.graphicalProperties.line.dashStyle = "sysDot"  # 線條點狀樣式
s1.graphicalProperties.line.width = 80000  # 線條大小,最大20116800EMUss2 = c1.series[2]  # 采用默認設置
s2.smooth = True  # 線條平滑ws.add_chart(c1, "A8")  # 圖表位置wb.save("line.xlsx")

10.只讀只寫

讀寫大文件,使用只讀只寫模式

只讀模式

只讀取數值用于其他數據分析,不改變和保存。

from openpyxl import load_workbook# 加載Excel文件時使用read_only指定只讀模式
wb = load_workbook(filename='large_file.xlsx', read_only=True)
ws = wb['big_data']# 可以正常讀取值
for row in ws.rows:for cell in row:print(cell.value)# 注意:讀取完之后需要手動關閉避免內存泄露
wb.close()

只寫模式

可以在創建的時候指定為只寫模式以便提高性能,不管文件有多大,都可以把內存保持在10M以下。

from openpyxl import Workbook
from openpyxl.cell import WriteOnlyCell
from openpyxl.comments import Comment
from openpyxl.styles import Fontwb = Workbook(write_only=True)  # 創建工作簿時指定只寫模式
ws = wb.create_sheet()  # 需要通過create_sheet創建一個sheet# 可以正常保存數據
for _ in range(100):ws.append([i for i in range(200)])  # 只能通過append寫# 如果需要保留公式、注釋等操作,可以使用WriteOnlyCell
cell = WriteOnlyCell(ws, value="冰冷的希望")
cell.font = Font(name='黑體', size=15)
cell.comment = Comment(text="這是注釋", author="pan")ws.append([cell])wb.save('openpyxl/test.xlsx')

如果你對Python感興趣,想要學習python,這里給大家分享一份Python全套學習資料,都是我自己學習時整理的,希望可以幫到你,一起加油!

😝有需要的小伙伴,可以點擊下方鏈接免費領取或者V掃描下方二維碼免費領取🆓
Python全套學習資料

在這里插入圖片描述

1??零基礎入門

① 學習路線

對于從來沒有接觸過Python的同學,我們幫你準備了詳細的學習成長路線圖。可以說是最科學最系統的學習路線,你可以按照上面的知識點去找對應的學習資源,保證自己學得較為全面。
在這里插入圖片描述

② 路線對應學習視頻

還有很多適合0基礎入門的學習視頻,有了這些視頻,輕輕松松上手Python~
在這里插入圖片描述

③練習題

每節視頻課后,都有對應的練習題哦,可以檢驗學習成果哈哈!
在這里插入圖片描述

2??國內外Python書籍、文檔

① 文檔和書籍資料

在這里插入圖片描述

3??Python工具包+項目源碼合集

①Python工具包

學習Python常用的開發軟件都在這里了!每個都有詳細的安裝教程,保證你可以安裝成功哦!
在這里插入圖片描述

②Python實戰案例

光學理論是沒用的,要學會跟著一起敲代碼,動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。100+實戰案例源碼等你來拿!
在這里插入圖片描述

③Python小游戲源碼

如果覺得上面的實戰案例有點枯燥,可以試試自己用Python編寫小游戲,讓你的學習過程中增添一點趣味!
在這里插入圖片描述

4??Python面試題

我們學會了Python之后,有了技能就可以出去找工作啦!下面這些面試題是都來自阿里、騰訊、字節等一線互聯網大廠,并且有阿里大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。
在這里插入圖片描述
在這里插入圖片描述

5??Python兼職渠道

而且學會Python以后,還可以在各大兼職平臺接單賺錢,各種兼職渠道+兼職注意事項+如何和客戶溝通,我都整理成文檔了。
在這里插入圖片描述

上述所有資料 ?? ,朋友們如果有需要的,可以掃描下方👇👇👇二維碼免費領取🆓
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213943.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

9.靜態路由

靜態路由 中小型網絡都會用到&#xff0c;防火墻核心交換機用的很多&#xff0c;一般是用在出口 路由表&#xff1a;路由器用來轉發數據包唯一的依據 NextHop下一跳 Static靜態路由需要手動設置 ip route-static 目標網段 掩碼 下一跳例如&#xff1a;ip route-static 192…

QT講程序打包成安裝包讓任何人可以使用

&#x1f482; 個人主頁:pp不會算法v &#x1f91f; 版權: 本文由【pp不會算法v】原創、在CSDN首發、需要轉載請聯系博主 &#x1f4ac; 如果文章對你有幫助、歡迎關注、點贊、收藏(一鍵三連)和訂閱專欄哦 文章目錄 1、release模式下編譯2、windeploy 打包發布3、使用inno setu…

node.js express cors解決跨域

目錄 什么是跨域 示例 postman請求 前端請求 cors中間件解決跨域 流程 配置cors參數 什么是跨域 跨域&#xff08;Cross-Origin&#xff09;是指在 Web 開發中&#xff0c;當一個網頁的源&#xff08;Origin&#xff09;與另一個網頁的源不同時&#xff0c;就發生了跨域…

day6 arm

main.c #include "uartt.h"//封裝延時函數void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j);}}int main(){//串口初始化uart4_init();//燈初始化led_init();//char a;char *s;while(1){myputchar(\n);myputchar(\r);//從串口讀取一個字符// amyget…

手把手教你反編譯小程序

本次實驗環境 操作系統: win10 10.0.19042 node: v14.17.0 微信開發者工具: Stable 1.05.2110290 前期準備 在電腦端安裝模擬器工具&#xff0c;這里以夜神模擬器為例&#xff0c; 在模擬器中安裝微信&#xff1a;用于微信打開小程序時加載小程序包。在模擬器中文件管理器&…

論文筆記:A review on multi-label learning

一、介紹 傳統的監督學習是單標簽學習&#xff0c;但是現實中一個實例可能對應多個標簽。這篇文章介紹了多標簽分類的定義和評價指標、多標簽學習的算法還有其他相關的任務。 二、問題相關定義 2.1 多標簽學習任務 假設 X R d X R^d XRd&#xff0c;表示d維的輸入空間&am…

面試經典150題(10-13)

leetcode 150道題 計劃花兩個月時候刷完&#xff0c;今天&#xff08;第四天&#xff09;完成了4道(10-13)150&#xff1a; 10. &#xff08;45. 跳躍游戲 II&#xff09;題目描述&#xff1a; 給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。 每個元素 nums[…

日本服務器:確保其穩定性的幾個要點

?  在租用日本服務器時&#xff0c;用戶們大多一定會關注它的穩定性&#xff0c;其實這些顧及都是正常的。畢竟&#xff0c;網站要想正常運行&#xff0c;保障服務器穩定是關鍵。本文將討論有關如何保障日本服務器穩定性的一些有用技巧&#xff0c;希望對您有所幫助。 1.注重…

Linux定時循環備份指定文件或文件夾,每月永久備份留1份

備份需求&#xff1a;每天完成一次指定文件的備份&#xff0c;壓縮后存放到指定目錄 問題&#xff1a;備份時間長了以后占用空間較大&#xff0c;浪費存儲&#xff0c;實際歷史備份意義不大&#xff0c;并不需要永久保存。但是如果直接刪除可能導致無法恢復歷史狀態的數據。 …

SpringBoot 啟動加載器解析

計時器介紹 啟動加載器實戰 實現方式1 實現CommandLineRunner接口重寫run方法通過Order進行排序 示例: Component Order(1) public class FirstCommandlineRunner implements CommandLineRunner {Overridepublic void run(String... args) throws Exception {System.out.pr…

一篇上手機器學習

一、上手機器學習的幾個階段 上手機器學習&#xff0c;第一步當然是看完我的這篇文章啦~&#xff0c;然后就按以下步驟來就可以了&#xff1a; 學習Python編程語言&#xff1a;Python是一種易于學習的高級編程語言&#xff0c;廣泛應用于機器學習領域。你可以通過學習Python的…

第三節、項目支付功能實戰-微信支付平臺接入流程,小程序賬號注冊、商戶注冊

簡介 本篇介紹小程序的注冊流程、商戶平臺的注冊流程、以及小程序和商戶平臺如何進行綁定。 微信小程序注冊 由于項目中使用了小程序進行支付&#xff0c;所以首先來注冊小程序。小程序注冊網站如下&#xff1a;小程序注冊地址 小程序賬號注冊 1、鏈接頁面點擊“前往注冊”…

carla安裝中的問題

1、carla carla安裝完后&#xff0c;需要使用python調用API去更換地圖&#xff0c;增加車輛等 使用Python調用API過程中可能會報錯&#xff1a; 報錯1&#xff1a;carla API&#xff08;Carla包&#xff09;版本不對 **解決方法&#xff1a;**需要將這個目錄下的三個文件拷…

數學建模算法

算法部分 1. 評價類模型2. TOPSIS3. 線性規劃4. 聚類分析5. 預測模型6. 拉伊達準則(對異常值進行剔除)7. 數據擬合8. 圖論代碼練習1. 模擬圓周率2. 斐波那契數列3. 四只鴨子落在一個圓中概率4. 方程2: y" uy y,初值y(0) 1,y(0) 0 算法講解 matlab代碼大全 1. 評價類模型…

【Python】修改pip 默認安裝位置

使用pip安裝的時候&#xff0c;一般是默認安裝在c盤里的。這樣做很容易會讓c盤的文件堆滿。那么如何讓pip安裝的包放入d盤呢&#xff1f; 查看pip默認安裝的位置 在cmd里輸入python -m site&#xff0c;這里可以看到&#xff0c;安裝包會默認下載到c盤中 從這里可以看到&am…

【Spring教程15】Spring框架實戰:詳解解讀AOP的工作流程和AOP的核心概念

目錄 1 AOP工作流程2 AOP核心概念 歡迎大家回到《 Java教程之Spring30天快速入門》&#xff0c;本教程所有示例均基于Maven實現&#xff0c;如果您對Maven還很陌生&#xff0c;請移步本人的博文《 如何在windows11下安裝Maven并配置以及 IDEA配置Maven環境》&#xff0c;本文…

如何使用cpolar+Inis在Ubuntu系統快速搭建本地博客網站公網可訪問

文章目錄 前言1. Inis博客網站搭建1.1. Inis博客網站下載和安裝1.2 Inis博客網站測試1.3 cpolar的安裝和注冊 2. 本地網頁發布2.1 Cpolar臨時數據隧道2.2 Cpolar穩定隧道&#xff08;云端設置&#xff09;2.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 3. 公網訪問測試總…

AspNetCore 中使用 Knife4jUI 更加友好的Swagger界面

&#x1f680;介紹 aspnetcore.knife4j是一個基于.NET Core平臺的Swagger UI庫&#xff0c;它提供了API文檔的生成和管理功能。這個庫的前身是swagger-bootstrap-ui&#xff0c;在Java項目中廣泛使用&#xff0c;由于其優秀的界面和易用性被許多開發者所推崇。現在&#xff0c…

LV.13 D2 開發板啟動流程 學習筆記

一、開發板啟動過程 EMMC&#xff1a;相當于電腦的外存&#xff0c;斷電不丟失 開發板上電后首先運行SOC內部iROM中固化的代碼(BL0)&#xff0c;這段代碼先對基本的軟硬件環境(時鐘等...)進行初始化&#xff0c;然后再檢測撥碼開關位置獲取啟動方式&#xff0c;然后再將對應存儲…

基于SSM+MySQL學生宿舍管理系統的設計與實現(源碼+數據庫+文檔)

摘 要 近年來&#xff0c;隨著計算機技術的不斷發展和運用&#xff0c;許多實際問題都得到了較好地解決。隨著現代社會對企業經營的需求日益增長&#xff0c;企業的無紙辦公也逐漸得到了推廣。本學生宿舍管理系統的設計開發&#xff0c;目標就是解決宿舍管理復雜的人為管理&a…