Αποφυγή αυτόματης εισαγωγής ημερ/νίας στο Open Office calc.

Nikos Alexandris nikos.alexandris at uranus.uni-freiburg.de
Sat Aug 9 15:46:02 BST 2008


On Fri, 2008-08-08 at 19:43 +0300, Konstantinos Togias wrote:
> 2008/8/8 Alexis Bitoulas <albitoulas at yahoo.gr>:
> > Φίλοι καλημέρα σας,
> >
> > Ευχαριστώ για την ανταπόκριση.
> >
> > Το αρχείο που έστειλες Νίκο Γιαννάρο, επιβεβαιώνω και εγώ ότι περιέχει
> > ακόμη κάποιες ημερομηνίες (κελιά Τ6, ΒΚ10) αν το ανοίξω είτε με το ΟΟ
> > calc, είτε με το Gnumeric. Με το gedit δεν κατάφερα να το ανοίξω, λόγω
> > "λανθασμένης κωδικοποίησης", όπως μου ανέφερε...
> > Άρα, το πρόβλημα υπάρχει ακόμα.
> >
> > Επίσης, επιβεβαιώνω και τα σημεία που παρατήρησες Νίκο Αλεξανδρή, με τα
> > κελιά που περιέχουν δύο τελείες αντί μία που είναι το σωστό. Δεν ξέρω
> > κατά πόσο αυτά τα κελιά είναι η αιτία για το πρόβλημα.
> >
> > Αν κάποιος άλλος έμπειρος με το ΟΟcalc, έχει υπόψιν του κάτι, θα το
> > εκτιμούσα πολύ!
> >
> > Διαφορετικά, μήπως μπορούμε να το αναφέρουμε κάπου πιο "πάνω", εννοώ
> > launchpad ή σε κάποιον άλλο υπεύθυνο για το ΟΟcalc. Επειδή δεν ξέρω και
> > πολλά πέρα από τη λίστα μας και το φόρουμ μας, αν μπορείτε δώστε μου
> > κάποιες κατευθύνσεις, σε περίπτωση που δεν το λύσουμε μόνοι μας το
> > πρόβλημα.
> >
> > Σας ευχαριστώ όλους,
> >
> > Φιλικά,
> >
> > --
> > Αλέξης
> >
> >
> >
> > --
> > Ubuntu-gr mailing list
> > Ubuntu-gr at lists.ubuntu.com
> >
> > If you do not want to receive any more messages from the ubuntu-gr mailing list, please follow this link and choose unsubscribe:
> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr
> >
> 
> Γεια σας,
> 
> Κοίταξα λίγο το πρόβλημα με το csv αρχείο και έχω τα εξής σχόλια:
> 
> 1. Το πρόβλημα με τη μετατροπή των δεκαδικών με τελεία (.) σε
> ημερομηνίες πρέπει να έχει να κάνει με την τοπικοποίηση του
> openoffice. Όταν το calc είναι σε εξελληνισμένο περιβάλλον
> αντιλαμβάνεται σαν χαρακτήρα διαχωρισμού ακεραίου από δεκαδικό μέρος
> το κόμμα (,), ενώ την τελεία (.) την ερμηνεύει ως διαχωριστικό μήνα,
> μέρας, έτους σε ημερομηνίες. Έτσι τους αριθμούς που περιέχουν . τους
> ερμηνεύει σαν ημερομηνίες και όχι σαν δεκαδικούς. Δεν ξέρω αν - από
> που ρυθμίζεται αυτή η συμπεριφορά, αλλά θα μπορούσε να δοκιμάσει
> κάποιος που έχει αγγλικό περιβάλλον και αγγλικό openoffice να μας πει
> αν η συμπεριφορά εκεί είναι πιο κοντά στην αναμενόμενη (δηλ οι τελείες
> ερμηνευονται ως δεκαδικοί και όχι ως ημερομηνίες).

Κώστα, νομίζω ότι αυτό δεν είναι πρόβλημα αφού κατά το άνοιγμα ενός csv
με το ΟΟCalc έχει τη δυνατότητα ο χρήστης να επιλέξει τον χαρακτήρα που
παίζει το ρόλο του διαχωριστή στηλών. Βέβαια, εγώ έχω την Αγγλική γλώσσα
(και άρα την τελεία ως διαχωεριστικό χαρακτήρα για δεκαδικά ψηφία).
Ωστόσο, στηρίζω τα λεγόμενά μου στο ότι ο Αλέξης, που έχει ρυθμίσεις
στην Ελληνική, δεν ανέφερε να υπάρχει πρόβλημα με όλους τους αριθμούς
παρά μόνο με συγκεκριμένους. Εκεί λοιπόν συνέδεσα το πρόβλημα με την
ύπαρξη δυο τελειών.

> 2. Στο αρχείο υπάρχουν τιμές της μορφής 23..5 που είναι λογικό να
> δημιουργούν πρόβλημα . Δεν ξέρω τι κάνει και τι θα έπρεπε να κάνει το
> calc όταν συναντά τέτοιες τιμές. Η ύπαρξη  της διπλής τελείας, αν δεν
> είναι για κάποιο λόγο ηθελημένη, αποτελεί σφάλμα του προγράμματος που
> παρήγαγε το CSV αρχείο.

Ίσως να ήταν μια χρήσιμη "διορθωτική" λειτουργία στο OOCalc να ρωτά το
χρήστη αν θέλει να "διορθώσει" τέτοιες τιμές (;)


> 3. Το calc για κάποιο λόγο αρνείται να φορτώσει όλες τις γραμμές του
> CSV . Φορτώνει τις 11 πρώτες και στη συνέχεια βγάζει ένα μήνυμα για
> υπέρβαση μέγιστου ορίου γραμμών. Κάποιος πρέπει να δει πως είναι το
> μήνυμα αυτό στα και να ψάξει λίγο στο google για το τι σημαίνει και
> αν/από που ρυθμίζεται - παρακάμπτεται το μέγιστο όριο γραμμών

Αυτό είναι γνωστό πρόβλημα τελικά. Για παράδειγμα [1] [2] που κατά πάσα
πιθανότητα θα είναι φιξαρισμένο στην έκδοση ΟΟ3 [3].

[1]
http://www.nabble.com/Maximum-number-of-rows-and-columns-in-Calc--td17106361.html
[2] http://www.openoffice.org/issues/show_bug.cgi?id=86049
[3] http://www.openoffice.org/issues/show_bug.cgi?id=86049

> 
> 4. Κατα προσωπική μου γνώμη τα παραπάνω (πέραν της διπλής τελείας
> ίσως) οφείλονται σε ελλειπή υλοποίηση και έλλειψη επιλογών στη
> διαδικασία εισαγωγής CSV αρχείων από μεριάς του openoffice 2.4.1 . Ας
> ελπίσουμε ότι τα πράγματα θα είναι καλύτερα στο ooo3 .
> 
> 5. Επειδή όμως είμαστε στον κόσμο του Unix (και ειδικότερα του
> υπέροχου ελεύθερου linux) πολλά μπορούν να διορθωθούν εύκολα και
> γρήγορα όταν έχουμε να κάνουμε με αρχεία κειμένου, με τη χρήση
> εξωτερικών προγραμμάτων επεξεργασίας ροών κειμένου (stream editors),
> όπως το sed ή το awk που με τη βοήθεια των κανονικών εκφράσεων
> (regular expressions) αποτελούν πανίσχυρα εργαλεία και μας επιτρέπουν
> να μεταμορφώνουμε αρχεία κειμένου όπως το CSV για το οποίο μιλάμε. Με
> το sed λοιπόν μπορεί κάποιος να εξαφανίσει τις διπλές -τριπλές κλπ
> τελείες και να τις αντικαταστήσει με μία μόνο τελεία, να αλλάξει τα
> διαχωριστικά των κελιών από κόμματα σε κάτι άλλο, και μετά να αλλάξει
> τις διαχωριστικές τελείες σε κόμματα, ωστε οι αριθμοί να αποκτήσουν
> ελληνοποιημένη μορφή (κόμμα αντί τελεία για δεκαδικά). Η εντολή που
> έτρεξα εγώ από το τερματικό είναι η εξής:
> 
> sed 's/\([0-9]\)\.\.\([0-9]\)/\1\.\2/g' < download.csv | sed 's/,/|/g'
> | sed 's/\./,/g' > download.corrected.csv

Μια σημείωση για τον άπειρο χρήστη: η εντολή έχει ως "στόχο" το αρχείο
download.csv και θα πρέπει να εκτελεστεί μέσα από τον (υπο-)κατάλογο
στον οποίο βρίσκεται το αρχείο-στόχος.


> Η παραπάνω εντολή μπορεί αρχικά να φαίνεται λίγο ακαταλαβίστικη, αλλά
> μολις την σπάσει κάποιος σε τμήματα και συνηθίσει τη σύνταξη των
> κανονικών εκφράσεων θα ξετυλιχτεί μπροστά του όλη η ομορφιά της:
> 
> α. Η γραμμή αποτελείται από διαδοχικές διασωληνώσεις (pipes) 3
> εκτελέσεων του προγράμματος sed. Τα διασωληνωμένα τμήμα διαχωρίζονται
> με τον χαρακτήρα | όταν αυτός δεν βρίσκεται μέσα σε μονά εισαγωγικά
> (').
> 
> β. Η πρώτη εντολή εκτελεί το sed με είσοδο το αρχείο download.csv και
> με την κανονική έκφραση  s/\([0-9]\)\.\.\([0-9]\)/\1\.\2/g που
> βρίσκεται ανάμεσα σε απλά εισαγωγικά. Η κανονική έκφραση
> s/\([0-9]\)\.\.\([0-9]\)/\1\.\2/g λέει στο sed να αντικαταστήσει όλες
> τις εμφανίσεις δυο συνεχόμενων χαρακτήρων τελεία που βρίσκονται
> ανάμεσα σε δυο αριθμητικούς χαρακτήρες, με μια μόνο τελεία που
> βρίσκεται ανάμεσα σε αυτούς τους χαρακτήρες.
> 
> γ. Η δεύτερη εντολή θα τρέξει με είσοδο την έξοδο της προηγούμενης και
> με βάση τα όσα λέει η δική της κανονική έκφραση θα αντικαταστήσει όλα
> τα κόμματα με τον χαρακτήρα | .
> 
> δ. Συνεχίζοντας τη διασωλήνωση όταν η ροή κειμένου φτάσει στην τρίτη
> εντολή οι τελείες θα αντικατασταθούν με κόμματα.
> 
> ε. Η έξοδος της τελευταίας εντολής ανακατευθύνεται με τον χαρακτήρα >
> από το κέλυφος στο αρχείο  download.corrected.csv .
> 
> Έτσι το αρχείο download.corrected.csv περιέχει τα δεδομένα που είχε το
> download.csv, χωρίς διπλές τελείες, με | αντί για κόμματα για το
> διαχωρισμό των κελιών και με , αντι για . για το διαχωρισμό ακέραιου
> και δεκαδικού μέρους. Το παραγώμενο αρχείο το άνοιξα με  calc σε
> ελληνικό περιβάλλον επιλέγοντας στο "διαχωριζόμενα με" "άλλο" και
> ορίζοντας τον χαρακτήρα | ως διαχωριστικό και το άνοιξε χωρις (προφανή
> τουλάχιστον) λάθη. Οι αριθμοί αναγνωρίστικαν κανονικά ως δεκαδικοί με
> κόμμα, και δεν υπήρχαν ημερομηνίες. Βέβαια πάλι το calc αρνήθηκε να
> εισάγει όλες τις γραμμές του CSV.
> 
> Παραπομπές:
> 
> Sed - An introduction and tutorial : http://www.grymoire.com/Unix/Sed.html
> 
> Introducing Unix shell pipes: http://sig9.com/articles/unix-pipes-intro

Φιλικά, Νίκος




More information about the Ubuntu-gr mailing list