Moderators Spect~ Δημοσ. 16 Μαΐου 2022 Moderators Δημοσ. 16 Μαΐου 2022 Επανέρχομαι με ενα νέο πρόβλημα! Θέλω να φτιάξω ενα αρχείο google sheets ή excel, για να κρατάω ενα ιστορικό με κάποιες κινήσεις οι οποιες θα γίνονται import απο ενα csv αρχειο. Το αρχειο καθε φορά θα περιέχει νεες εγγραφές αλλα εγω θελω να γίνονται import μόνο οι νέες, δηλαδη αυτες που δεν θα υπάρχουν στο εξελ μου. Πως θα γινει στο import να κραταω μονο τις νεες; Καθε γραμμη εχει ενα unique ID που μπορει να χρησιμοποιηθει. ΥΓ: βγαινει μονο σε csv το εξπορτ και δεν μπορω να το αλλαξω αυτο
masteripper Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 (επεξεργασμένο) INSERT INTO.... WHERE ID NOT IN (SELECT ID FROM ExistingRecords) Επεξ/σία 16 Μαΐου 2022 από masteripper
Moderators Spect~ Δημοσ. 16 Μαΐου 2022 Μέλος Moderators Δημοσ. 16 Μαΐου 2022 5 λεπτά πριν, masteripper είπε INSERT INTO.... WHERE ID NOT IN (SELECT ID FROM ExistingRecords) Σε εξελ ειναι αυτο; που θα το βρω;
archer100 Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 Μια απλη λυση θα ηταν να κανεις import ολο το αρχειο και μετα να κανεις remove duplicates σε ολες τις στηλες εκτος απο το ID Απλα σε περιπτωση που ειναι σημαντικο να κρατησεις την υφισταμενη ID και οχι την καινουργια, πρεπει να προσεξεις πως θα ειναι σορταρισμενο το αρχειο πριν το remove duplicates
Moderators Spect~ Δημοσ. 16 Μαΐου 2022 Μέλος Moderators Δημοσ. 16 Μαΐου 2022 5 λεπτά πριν, archer100 είπε Μια απλη λυση θα ηταν να κανεις import ολο το αρχειο και μετα να κανεις remove duplicates σε ολες τις στηλες εκτος απο το ID Απλα σε περιπτωση που ειναι σημαντικο να κρατησεις την υφισταμενη ID και οχι την καινουργια, πρεπει να προσεξεις πως θα ειναι σορταρισμενο το αρχειο πριν το remove duplicates Πρεπει να κραταω το υπαρχων γιατι θα προσθεετω μια δυο στειλες εγω. Το θεμα ειναι να μην χρειαζεται να το κανω καθε φορα χειροκινητα.
archer100 Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 Μπορει να γινει πολυ ευκολα με Python Απλα θελει πρεπει να ξερεις πως να τρεξεις το αρχειο και φυσικα να γραφτει ο σχετικος κωδικας (οχι τιποτα ιδιαιτερο, καμια 10-15 γραμμες)
Moderators Spect~ Δημοσ. 16 Μαΐου 2022 Μέλος Moderators Δημοσ. 16 Μαΐου 2022 3 λεπτά πριν, archer100 είπε Μπορει να γινει πολυ ευκολα με Python Απλα θελει πρεπει να ξερεις πως να τρεξεις το αρχειο και φυσικα να γραφτει ο σχετικος κωδικας (οχι τιποτα ιδιαιτερο, καμια 10-15 γραμμες) Να το κανω σε python για να βρισκει τις νεες εγγραφες και να κανει import μονο τις νεες; ετσι θα μπορουσα να το βαλω να κατεβαζει και το αρχειο μονο του (αν γινεται)
archer100 Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 1 λεπτό πριν, Spect~ είπε Να το κανω σε python για να βρισκει τις νεες εγγραφες και να κανει import μονο τις νεες; ετσι θα μπορουσα να το βαλω να κατεβαζει και το αρχειο μονο του (αν γινεται) Ακριβως, θα εισαγει μονο τις νεες. Και φυσικα μπορει να κατεβασει το αρχειο αυτοματα απο καποιο σαιτ με λιγο κωδικα ακομα 1
Moderators Spect~ Δημοσ. 16 Μαΐου 2022 Μέλος Moderators Δημοσ. 16 Μαΐου 2022 1 λεπτό πριν, archer100 είπε Ακριβως, θα εισαγει μονο τις νεες. Και φυσικα μπορει να κατεβασει το αρχειο αυτοματα απο καποιο σαιτ με λιγο κωδικα ακομα Ναι προγραμματιστικα φυσικα και γινεται αλλα αναφέρομαι στο κομματι της συνδέσεις στη σελιδα ή αν πχ το λινκ ειναι καθε φορα το ιδιο κλπ. Απο την αλλη γιατι να μην γινει απευθειας σε VBA? Εκτος απο τις δυνατότητες και ευκολιες που σου δινει η python το να εχεις απλα ενα αρχειο και να το τρεχεις απο εκει
archer100 Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 1 λεπτό πριν, Spect~ είπε Ναι προγραμματιστικα φυσικα και γινεται αλλα αναφέρομαι στο κομματι της συνδέσεις στη σελιδα ή αν πχ το λινκ ειναι καθε φορα το ιδιο κλπ. Απο την αλλη γιατι να μην γινει απευθειας σε VBA? Εκτος απο τις δυνατότητες και ευκολιες που σου δινει η python το να εχεις απλα ενα αρχειο και να το τρεχεις απο εκει Φυσικα μπορει να γινει και σε VBA Απλα δεν γνωριζω προσωπικα VBA για να γνωμοδοτησω 1
masteripper Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 Μιας και είσαι Excel και δεν έχει πρόσβαση σε queries θα κανεις εισαγωγή το CSV με VBA σε 1 προσωρινό sheet...θα φορτώσεις το Υπάρχον φύλλο και το φύλλο του CSV σε 2 ξεχωριστά Recordset και θα κάνεις iterate to 2o Recordset(CSV) και θα ελέγχεις εαν υπαρχει το ID στο 1ο..ειδάλλως AddNew 1
Moderators Spect~ Δημοσ. 16 Μαΐου 2022 Μέλος Moderators Δημοσ. 16 Μαΐου 2022 Θα το δω αργοτερα αν εχω χρονο και αν εχω καμια αλλη ερωτηση θα επανέλθω! Ευχαριστώ!
masteripper Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 Αυτό θα σε βοηθήσει Απλώς παρακολούθησετε και ακολούθησε την λογική του (Δεν χρειάζεται να το αγοράσεις) 3
DrKo Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 1 ώρα πριν, Spect~ είπε Να το κανω σε python για να βρισκει τις νεες εγγραφες και να κανει import μονο τις νεες; ετσι θα μπορουσα να το βαλω να κατεβαζει και το αρχειο μονο του (αν γινεται) Σε Python μπορείς να πάρεις τις υφιστάμενες εγγραφές σε ένα set και μετά να κάνεις update αυτό το set με όλες τις εγγραφές που θέλεις να βάλεις. Επειδή είναι set, θα κρατήσει μόνο τις νέες εγγραφές. Μετά, περνάς το set αυτό σε ένα CSV. Εάν οι εγγραφές σου αποτελούνται από πολλά πεδία, μπορείς να ορίσεις εσύ μία κλάση “Records” και να υλοποιήσεις τις magic methods που χρησιμοποιεί το set. Χωρίς να το έχω ψάξει, εικάζω πως θα χρησιμοποιεί την `__eq__`. Εάν μία εγγραφή είναι κάτι απλό, τότε και απλά strings θα κάνουν δουλειά. Εάν μία εγγραφή στηρίζεται μόνο σε ένα πεδίο, π.χ. ID, τότε κάνε το set μόνο με τα IDs και πρόσθεσε στο set μόνο τα εισερχόμενα IDs.
masteripper Δημοσ. 16 Μαΐου 2022 Δημοσ. 16 Μαΐου 2022 (επεξεργασμένο) Μιας και πιάσαμε την Python import pandas as pd import openpyxl df_source = pd.read_excel("C:\\Temp\Book1.xlsx") df_csv = pd.read_csv("C:\\Temp\Book2.csv") df_result =pd.concat([df_source,df_csv]).drop_duplicates(['ID'], keep='last').sort_values(by=['ID']).reset_index(drop=True) df_result.to_excel("C:\\Temp\Final.xlsx") και για να μην μπλέκουμε με θεωρητικές εικασίες ... Επεξ/σία 16 Μαΐου 2022 από masteripper 3
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα