如何在控制臺查看excel內容

背景

最近發現打開電腦的excel很慢,而且使用到的場景很少,也因為mac自帶了預覽的功能。但是shigen就是閑不住,想自己搞一個excel預覽軟件,于是在一番技術選型之后,我決定使用python在控制臺顯示excel的內容。
具體的需要的功能有:

  1. 查看excel的某一行信息
  2. 查看某個范圍的信息,信息的區間為[start,end]
  3. 如果以上的行、起始行、結束行這幾個參數都沒有傳遞,就分頁展示

于是帶著這樣的設計,我開始了折騰。
技術選型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一起,每天不一樣。

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

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

相關文章

Redis與MySQL的比較:什么情況下使用Redis更合適?什么情況下使用MySQL更合適?

Redis和MySQL是兩種不同類型的數據庫,各有自己的特點和適用場景。下面是Redis和MySQL的比較以及它們適合使用的情況: Redis適合的場景: 高性能讀寫:Redis是基于內存的快速Key-Value存儲,讀寫性能非常高。它適用于需要…

NodeJs導出PDF

(優于別人,并不高貴,真正的高貴應該是優于過去的自己。——海明威) 場景 根據訂單參數生成賬單PDF 結果 示例代碼 /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ /* eslint-disable complexity */ const…

【jquery實現動態給表格添加刪除行,合并指定單元格】

jquery實現動態給表格添加刪除行&#xff0c;合并指定單元格 前端技術 jspjquery 動態添加行 //新增行 $("#addRowBtn").click(function(){var rowEl$("<tr><td><input typecheckbox classcheckItem/></td><td><input nam…

NPOI 讀取和寫入Excel

在C#中使用NPOI庫讀取和寫入Excel文件&#xff0c;你需要先下載并安裝NPOI庫。你可以在NuGet管理器中搜索NPOI并進行安裝。 以下是一個使用NPOI庫進行Excel文件讀取和寫入的示例&#xff1a; 讀取Excel文件&#xff1a; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel…

【仿寫tomcat】二、掃描java文件,獲取帶有@WebServlet注解的類

tomcat仿寫 項目結構掃描文件servlet注解map容器servlet工具類啟動類調用 項目結構 掃描文件之前當然要確定一下項目結構了&#xff0c;我這里的方案是tomcat和項目同級 項目的話就仿照我們平時使用的結構就好了&#xff0c;我們規定所有的靜態資源文件都在webApp目錄下存放…

【數據庫】P1 數據庫基本常識

數據庫基本常識 數據庫 ≠ 數據庫管理系統表&#xff08;Table&#xff09;SQL是什么 數據庫 ≠ 數據庫管理系統 數據庫是保存有組織的數據的容器&#xff0c;數據庫稱為 DB&#xff08;DataBase&#xff09;&#xff1b;數據庫管理系統是創建和操縱數據庫的軟件&#xff0c;數…

充氣泵方案設計——便攜無線充氣泵方案

充氣泵方案的進化史是人類歷史上電子技術發展史中的一環。電子技術&#xff0c;特別是微電子技術是 20 世紀發展最為迅速、影響最為廣泛的技術成就。電子技術的核心是電子器件,電子器件的進步和換代&#xff0c;引起了電子電路極大的變化&#xff0c;出現了很多新的電路和應用。…

java解決mysql大數據聯查問題

java解決mysql大數據聯查問題 近期有一個需求是聯查兩張表比對三個字段 一般用mysql就可以解決 SELECT* FROMtb_a aLEFT JOIN b ON a.test b.testAND a.NAME b.NAME AND a.type b.type但是表a和表b的數據量都很不小&#xff0c;大概在10w左右&#xff0c;由于并不是以固定…

Webpact學習筆記記錄

Webpact學習筆記記錄 一.初始化項目1.生成package.json2.安裝webpack3.執行webpack體驗 二、webpack的配置文件三、less-loader解析less1.安裝loader2.配置 四、eslint-loader語法檢查1.安裝loader2.配置loader3.在package.json中加入 五、js語法轉換1.安裝loader2.配置loader …

前端能正常跑起來但是控制臺報錯數據undefined之onMounted最好不要用異步寫法

記錄問題 在做項目的時候&#xff0c;項目可以正常運行&#xff0c;但是控制臺總是報錯&#xff0c;有一個數據是undefined。 分析問題 一般遇到這種情況&#xff0c;就是vue找不到這個數據。但是為什么能正常運行&#xff1f;說明是開始加載的時候找不到數據&#xff0c;但…

Java進階篇--數據結構

目錄 一.數組&#xff08;Array&#xff09;&#xff1a; 1.1 特點&#xff1a; 1.2 基本操作&#xff1a; 1.3 使用數組的好處包括&#xff1a; 1.4 數組也有一些限制&#xff1a; 二.集合框架&#xff08;Collections Framework&#xff09;&#xff1a; 2.1 列表…

當你出差在外時,怎樣輕松訪問遠程訪問企業局域網象過河ERP系統?

文章目錄 概述1.查看象過河服務端端口2.內網穿透3. 異地公網連接4. 固定公網地址4.1 保留一個固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址連接 概述 ERP系統對于企業來說重要性不言而喻&#xff0c;不管是財務、生產、銷售還是采購&#xff0c;都需要用到ERP系統來協助。…

miniconda克隆arcpy

arcpy環境克隆 前言嘗試思考到此結束 前言 最近遇到了一些問題&#xff0c;需要用到arcpy來處理一些東西&#xff0c;但眾所周知&#xff0c;arcgis的arcpy是python 2.0的&#xff0c;我不是很喜歡&#xff1b;所以我安裝了arcgis pro 2.8&#xff0c;我發現這也是個坑&#x…

Git分布式版本控制系統

目錄 2、安裝git 2.1 初始環境 2.2 Yum安裝Git 2.3 編譯安裝 2.4 初次運行 Git 前的配置 2.5 初始化及獲取 Git 倉庫 2.6 Git命令常規操作 2.6.2 添加新文件 2.6.3 刪除git內的文件 2.6.4 重命名暫存區數據 2.6.5 查看歷史記錄 2.6.6 還原歷史數據 2.6.7 還原未來…

react使用antd的table組件,實現點擊彈窗顯示對應列的內容

特別提醒&#xff1a;不能在table的columns的render里面設置彈窗組件渲染&#xff0c;因為這會導致彈窗顯示的始終是最后一行的內容&#xff0c;因為這樣渲染的結果是每一行都會重新渲染一遍這個彈窗并且會給傳遞一個content的值&#xff0c;渲染到最后一行的時候&#xff0c;就…

Unity的TimeScale的影響范圍分析

大家好&#xff0c;我是阿趙。 這期來說一下Unity的TimeScale。 一、前言 Unity提供了Time這個類&#xff0c;來控制時間。其實我自己倒是很少使用這個Time&#xff0c;因為做網絡同步的游戲&#xff0c;一般是需要同步服務器時間&#xff0c;所以我比較多是在使用System.Date…

linux驅動 - 20230817

練習: 通過字符設備驅動分步注冊方式編寫LED燈的驅動&#xff0c;應用程序使用ioctl函數編寫硬件控制邏輯 頭文件 head.h #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned…

問道管理:機器人概念走勢活躍,新時達漲停,拓斯達、豐立智能等大漲

機器人概念17日盤中走勢活躍&#xff0c;到發稿&#xff0c;拓斯達大漲18%&#xff0c;昊志機電漲近16%&#xff0c;豐立智能漲超13%&#xff0c;步科股份、優德精細漲超10%&#xff0c;新時達漲停&#xff0c;天璣科技、兆龍互聯、中大力德漲逾9%。 消息面上&#xff0c;8月16…

HTTP 介紹

HTTP 介紹 HTTP 協議一般指 HTTP&#xff08;超文本傳輸協議&#xff09;。超文本傳輸協議&#xff08;英語&#xff1a;HyperText Transfer Protocol&#xff0c;縮寫&#xff1a;HTTP&#xff09;是一種用于分布式、協作式和超媒體信息系統的應用層協議&#xff0c;是因特網…