Re: [問題] 如何用Pyqt去搜尋excel內特定區塊的數值

看板Python作者 (夢載會)時間1年前 (2023/01/30 23:30), 1年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
這幾天翻了自己的小小專案工具 以前花了兩個月閒餘學的東西,只花了2天就結束了 突然很想分享一下 利用你的問題來說明我的方式 首先我們應該先處理邏輯問題 學生資料應該可以用dict(字典來表示) Students = { A: {day1:[a,b,c,d],day2:[c,d]},B:{day.... 所以我們要來讀取excel然後取得相關的資料再組合 第一個選單從 column 1取得有幾個學員 第二個選單從 column 2針對每個學員的row範圍取得有幾個資料並獲得相對應的row 第三個選單從 column 3及學員row範圍取得內容 所以我們可以分析成下面這樣#我都當你表格非常的整齊標準有邏輯 stundents = {} student = "" for row_k in row(1....MaxRow): #第一個選單的判斷 if row_k != 空白: #代表有學生名稱 student = 資料 studnets[student] = {}#創建一個學生字典 if row_k = 空白:#那就代表可能這行row是資料 if colunm2(row_k) != 空白: #代表row有資料 stundents[student][colunm2(row_k)] = [] 創建天數listOB for column_k in column(3...MaxColumn) if column_k !=空白: break stundents[student][colunm2(row_k)].append(column_k) 這樣讀取完整個EXCEL表 應該就可以將你的資料建立好students字典 所以重點來了 讀取excel是個問題,前面有提到我翻整個小專案只花了三天 我原本用TK刻的UI實在是問題多多,也轉進PQty 請先參考前面大大分享的文章 https://ithelp.ithome.com.tw/users/20120424/ironman/4879 先用QtDesign建立好想要的UI 然後....請打開https://chat.openai.com/ 記得第一句話問 "我有一些python的問題" !!這很重要 先從EXCEL讀取開始問 "我有一個EXCEL表,我要怎樣知到最大的column跟row的編號" 這時候你就知道前面的最大值該怎樣讀取了 然後繼續問 "那我想要藉由row的最大值遍歷某個column該怎樣處理" 前面如何遍歷學生範圍他就給你答案了 把前面資料建立的問題都問完後 剩下就是怎樣附值給你用QtDesign建立的下拉表 (QCombox) students.keys() 就是學生的清單 student[key].keys() 就是該學生的day student[key][key] 就是該學生day的資料清單 這時候 就直接問他要怎樣將list設定給QCombox以及取得選擇值 https://github.com/Saxo0213/readexceldata 當然還有一些實作時候會有的問題通通拿去問~~ ChatGPT真的好棒 我本職不是程式方面的,這種小問題問版上大神們實在太浪費了 交給AI就好了(大誤 還可以減少非常多的技術文件查詢時間,不用嗎? **QtDesign使用小技巧 創建的ui檔轉PY可以寫個批次檔執行指令,這樣就可以邊改邊設計 ※ 引述《ninifs (快快樂樂過每天 !)》之銘言: : 請教各位大大, : 小弟剛學會一些基本的python和openpyxl操作, : 也有時候也會用Pyqt寫成一個小介面幫助自己工作效率, : 目前遇到困難是工作上想實作以下操作,希望有高手幫忙指引一下! : excel內的數據如最下面, : 主要是有多個學員資料(至少100個,學員A,B,C,D......) : 每個學員有一個區塊的資料, : 每一個區塊的rows和columns數量不固定, : (就是表格內的 "day"和"內容"數量不固定) : 希望能用Pyqt的介面,做出三個下拉選單, : 第一個下拉選單可以選 => 學員A,學員B,學員C...etc : 第二個下拉選單可以選 => day1,day2,day3...etc : 第三個下拉選單可以選 => 內容1,內容2,內容3...etc : 這樣就可以定位到某一個cell,然後回報數值 : 可是我第一步就卡住了, : 若第一個下拉選單選了 "學員B", : 我該怎麼讓程式在接下來的動作中, : 只會去尋找"學員B"那個區塊裡面的東西 ?(因為那個區塊的大小不固定...@@) : 先謝謝各位大神了! : ===========example================= : 學員A : 內容1 內容2 內容3 : day1 23 12 65 : day2 14 23 42 : day3 5 21 654 : day4 16 5 879 : day5 86 435 433 : 學員B : 內容1 內容2 內容3 內容4 內容5 : day1 23 12 65 85 67 : day2 14 23 42 883 67 : day3 5 21 654 13 98 : 學員C : 內容1 內容2 : day1 23 12 : day2 14 23 : day3 5 21 : day4 16 5 : day5 86 435 : day6 123 23 : day7 79 64 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.215.74 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1675092612.A.665.html ※ 編輯: nsay (114.35.215.74 臺灣), 01/31/2023 11:47:15
文章代碼(AID): #1Zr-A4Pb (Python)
文章代碼(AID): #1Zr-A4Pb (Python)