Collaborate without boundaries

Read - Write σε docx, doc, rtf, txt με C#

Read - Write σε docx, doc, rtf, txt με C#

  • Comments 8

Αφού τελείωσε η εξεταστική, θεώρησα σκόπιμο να βγάλω το blog από την ναφθαλίνηStick out tongue...

Πρόσφατα ολοκλήρωσα κάποιες αλλαγές στην desktop έκδοση του Greeklish Converter, ανάμεσα στις οποίες και η ανάγνωση / εγγραφή σε αρχεία. Εκείνο που ήθελα να πετύχω ήταν η αυτόματη αναγνώριση του τύπου του αρχείου και η κλήση της σωστής μεθόδου ανάγνωσης / εγγραφής. Όλα αυτά, φυσικά, χωρίς να ανοίγω το Word, το Notepad ή οποιοδήποτε άλλο πρόγραμμα.

Είναι γνωστός ο τρόπος με τον οποίο δημιουργούμε και επεξεργαζόμαστε ένα αρχείο κειμένου χρησιμοποιώντας C#: Με λίγες γραμμές κώδικα και με χρήση των StreamReader και StreamWriter έχουμε φέρει εις πέρας τη δουλειά μας. Δυστυχώς, δεν ισχύουν τα ίδια πράγματα για αρχεία τύπου docx, doc και rft λόγω της διαφορετικής μορφής και φύσης αυτών των αρχείων. Αν δοκιμάσουμε να διαβάσουμε ή να γράψουμε σε τέτοια αρχεία χρησιμοποιώντας τις StreamReader - StreamWriter το αποτέλεσμα δεν θα είναι το επιθυμητό, αλλά θα παρουσιάζει διάφορα προβλήματα (με συνηθέστερο αυτό της εσφαλμένης κωδικοποίησης).

Επίσης, πάντα μού άρεσε να μπορώ καλώντας μία μόνο εντολή (Read ή Write) να παίρνω τα περιεχόμενα του επιθυμητού αρχείου.

Έτσι λοιπόν, έφτιαξα ένα απλό dll το οποίο μπορεί να ενσωματωθεί σε κάθε πρόγραμμα C# ή Visual Basic που κάνει target το .NET framework 3.0 και άνω. Το ονόμασα DocumentManager ελλείψει φαντασίας.

ΛΕΙΤΟΥΡΓΙΑ

Ο DocumentManager έχει διπλή λειτουργία. Αφενός, μπορεί να διαβάσει και να επιστρέψει τα περιεχόμενα ενός αρχείου και αφετέρου μπορεί να δημιουργήσει και να γράψει κείμενο σε αρχεία. Οι τύποι που προς το παρόν υποστηρίζει για ανάγνωση και εγγραφή είναι οι εξής:

  • MS Word 2007 (.docx)
  • MS Word 97 - 2003 (.doc)
  • Rich Text Format (.rtf)
  • Text (.txt)

Το μεγαλύτερο πρόβλημα που έπρεπε να αντιμετωπίσω ήταν η σωστή εισαγωγή του encoding. Τελικά, ο DocumentManager υποστηρίζει το UTF-8 για όλους τους παραπάνω τύπους αρχείων.

ΤΡΟΠΟΣ ΧΡΗΣΗΣ

Όπως προανέφερα, ήθελα όλη η διαδικασία να γίνεται απλά. Προκειμένου να χρησιμοποιηθεί ο DocumentManager, απαιτείται να κάνουμε τα παρακάτω βήματα:

1. Εισαγωγή του dll στην εφαρμογή μας. Στο Solution Explorer κάνουμε δεξί κλικ στον φάκελο References και επιλέγουμε "Add Reference...". Μέσω της καρτέλας Browse, πλοηγούμαστε στη θέση όπου είναι αποθηκευμένο το dll και το επιλέγουμε.

2. Στο πεδίο εισαγωγής των namespaces εισάγουμε το namespace DocumentManager πληκτρολογώντας

3. Τώρα, μέσα στο πρόγραμμά μάς μπορούμε να δημιουργήσουμε ένα αντικείμενο DocumentManager. Ο constructor παίρνει ως παράμετρο το path του αρχείου που θέλουμε να διαβάσουμε ή το path του αρχείου που θέλουμε να δημιουργήσουμε:

(Το path μπορούμε να το αλλάξουμε οποιαδήποτε στιγμή μεταβάλλοντας την τιμή του property FilePath.)

Αν θέλουμε να διαβάσουμε από το αρχείο της επιλογής μας και να αποθηκεύσουμε το κείμενο γράφουμε:

Αν θέλουμε να δημιουργήσουμε ένα νέο αρχείο στο path και να τού γράψουμε το κείμενο της επιλογής μας, αρκεί να πούμε:

Επιπλέον, υπάρχουν τα properties:

  • FilePath (επιστρέφει ή τροποποιεί τη διαδρομή του αρχείου) και
  • FileType (επιστρέφει τον τύπο του αρχείου)

ΤΙ ΣΥΜΒΑΙΝΕΙ ΕΣΩΤΕΡΙΚΑ

Ο DocumentManager δέχεται ένα path από το οποίο εντοπίζει το όνομα του αρχείου καθώς επίσης και τον τύπο του. Αν ο τύπος δεν υποστηρίζεται, τότε επιστρέφει error. Αν υποστηρίζεται, τότε καλείται η κατάλληλη μέθοδος ανάγνωσης ή εγγραφής.

DOWNLOADS

Κατεβάστε σκέτο το dll για να το ενσωματώσετε στην εφαρμογή σας (.ΝΕΤ 3.0 και άνω) όπως περιέγραψα πιο πριν.

Κατεβάστε ένα sample πρόγραμμα που χρησιμοποιεί το dll για να παρουσιάσει συνοπτικά και απλά την λειτουργία του.

 

Αν παρατηρήσετε κάποιο bug, αν έχετε κάποια πρόταση για βελτίωση ή αν θέλετε να επισημάνετε οτιδήποτε πάνω στον DocumentManager, μπορείτε να αφήσετε σχόλιο στο παρόν blog ή να επικοινωνήσετε μαζί μου.

Σημείωση: Προκειμένου να λειτουργήσει σωστά το dll και η εφαρμογή απαιτείται να υπάρχει εγκατεστημένη έκδοση του Office η οποία να αναγνωρίζεται ως αυθεντική!

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Post
Page 1 of 1 (8 items)
Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Post