背景
最近發現打開電腦的excel很慢,而且使用到的場景很少,也因為mac自帶了預覽的功能。但是shigen
就是閑不住,想自己搞一個excel預覽軟件,于是在一番技術選型之后,我決定使用python
在控制臺顯示excel的內容。
具體的需要的功能有:
- 查看excel的某一行信息
- 查看某個范圍的信息,信息的區間為[start,end]
- 如果以上的行、起始行、結束行這幾個參數都沒有傳遞,就分頁展示
于是帶著這樣的設計,我開始了折騰。
技術選型: python
faker
pandas
rich
argparse
參數列表:
-f
文件的絕對路徑/相對路徑-s
起始列-e
結束列-r
查看的行
生成假數據
還記得之前的faker
教程嗎?這次派上用場了,我打算用faker模擬生成假數據,然后用pandas
寫入到excel里邊。
首先我定義了一個user
類,它的屬性有ID,名字、密碼、昵稱、電話、簡介、頭像地址、創建時間和更新時間。
我們先來看一下模擬生成的一條數據的效果:
from faker import Faker# 創建Faker對象
fake = Faker('zh_CN')class User:def __init__(self):self.id = fake.random_int(min=1, max=1000)self.name = fake.name()self.password = fake.password()self.nickname = fake.user_name()self.phone = fake.phone_number()self.introduction = fake.text(max_nb_chars=200)self.avatar_url = fake.image_url(width=None, height=None)self.created_at = fake.date_time_this_decade().strftime('%Y-%m-%d %H:%M:%S')self.updated_at = fake.date_time_this_month().strftime('%Y-%m-%d %H:%M:%S')# 創建一個用戶實例
user = User()# 打印用戶屬性
print("ID:", user.id)
print("姓名:", user.name)
print("密碼:", user.password)
print("昵稱:", user.nickname)
print("電話:", user.phone)
print("自我介紹:", user.introduction)
print("頭像地址:", user.avatar_url)
print("創建時間:", user.created_at)
print("更新時間:", user.updated_at)
ID: 51
姓名: 陳健
密碼: @XGfngbT+3
昵稱: juan96
電話: 18827668763
自我介紹: 日本本站一個深圳.設備感覺只有以上能力特別.不同您的建設報告.
國家都是個人什么地方這種國家參加.他們進行加入汽車個人最大方式.一點以上數據生活主要.
兩個一般其他對于那么新聞.一下準備喜歡只要作品經濟.注冊最新更多制作名稱還有社會.
自己沒有能力組織不能一定.責任準備市場以后最新單位雖然.信息沒有謝謝表示.
控制重要標準的是之間.本站世界以上如何成為得到.
頭像地址: https://picsum.photos/541/475
創建時間: 2022-04-10 14:00:10
更新時間: 2023-08-11 00:05:08
怎么樣,數據是不是很好看。自詡一下,可以用來生成業務測試需要的基礎數據。
下邊是生成120條假數據。
# 生成120條用戶數據
users = [User() for _ in range(120)]
現在,數據生成好了,就需要我們將數據導入到excel里邊。
首先需要構建dataFrame
對象,直接寫入到users.xlsx
里邊,不得不說,df.to_excel
是真的很好用!
import pandas as pd# 將用戶數據轉換為DataFrame
data = {"ID": [user.id for user in users],"姓名": [user.name for user in users],"密碼": [user.password for user in users],"昵稱": [user.nickname for user in users],"電話": [user.phone for user in users],"自我介紹": [user.introduction for user in users],"頭像地址": [user.avatar_url for user in users],"創建時間": [user.created_at for user in users],"更新時間": [user.updated_at for user in users]
}
df = pd.DataFrame(data)# 保存DataFrame為Excel文件
filename = "users.xlsx"
df.to_excel(filename, index=False)print(f"數據已保存到文件'{filename}'")
數據已保存到文件'users.xlsx'
輸出了這樣的內容,就代表excel寫入成功了。現在就有了excel的測試數據了。
書寫代碼
現在數據已經有了,可以用來測試了。此處省略掉shigen
調試的漫長過程,只展示代碼的截圖,需要源代碼的伙伴可以私聊我哈。
效果驗證
現在,我們的編碼過程已經實現了,需要來驗證一下功能了。
獲得代碼的幫助
(base) ~ $ excel -h
usage: excel_reader.py [-h] [-f file] [-r ROW] [-s START] [-e END] [-p PAGESIZE]在控制臺查看 Excel 文件的內容optional arguments:-h, --help show this help message and exit-f file, --file_path fileExcel 文件路徑-r ROW, --row ROW 第幾行-s START, --start START起始行-e END, --end END 結束行-p PAGESIZE, --pagesize PAGESIZE每頁顯示的行數
獲得第10行
excel -f ~/temp/python/推文文章/users.xlsx -r 10
獲得10-12行的內容
內容有點多,僅展示兩條,看看效果
excel -f ~/temp/python/推文文章/users.xlsx -s 10 -e 12
分頁顯示
這也是這個功能的重頭戲,直接分頁顯示,不需要其它的額外參數
excel -f ~/temp/python/推文文章/users.xlsx
看到了提示嗎,輸入命令:(n-下一頁, p-上一頁, q-退出),我們來試試。
這就是下一頁的實現了。q
直接退出,我就不再演示了。
后記
這就是shigen
花了兩小時做出來的直接在終端讀取excel內容的功能,期待能實實在在地提升日常的效率。同時代碼也存在一些性能可以優化的,但是目前的知識技能有限,只能先做成這樣的了。
我也越發的相信:學技術,先廣度再深度這個觀點了,廣度:讓我有了足夠高的角度來看清楚問題的本質,接著技術選型和實現;深度:讓我挖掘其中的底層原理,不斷的優化程序的性能。
以上就是
shigen
的分享了,期待你的參與和交流。
與
shigen
一起,每天不一樣。