Αφού τελείωσε η εξεταστική, θεώρησα σκόπιμο να βγάλω το blog από την ναφθαλίνη...
Πρόσφατα ολοκλήρωσα κάποιες αλλαγές στην 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 έχει διπλή λειτουργία. Αφενός, μπορεί να διαβάσει και να επιστρέψει τα περιεχόμενα ενός αρχείου και αφετέρου μπορεί να δημιουργήσει και να γράψει κείμενο σε αρχεία. Οι τύποι που προς το παρόν υποστηρίζει για ανάγνωση και εγγραφή είναι οι εξής:
Το μεγαλύτερο πρόβλημα που έπρεπε να αντιμετωπίσω ήταν η σωστή εισαγωγή του encoding. Τελικά, ο DocumentManager υποστηρίζει το UTF-8 για όλους τους παραπάνω τύπους αρχείων.ΤΡΟΠΟΣ ΧΡΗΣΗΣ
Όπως προανέφερα, ήθελα όλη η διαδικασία να γίνεται απλά. Προκειμένου να χρησιμοποιηθεί ο DocumentManager, απαιτείται να κάνουμε τα παρακάτω βήματα:
1. Εισαγωγή του dll στην εφαρμογή μας. Στο Solution Explorer κάνουμε δεξί κλικ στον φάκελο References και επιλέγουμε "Add Reference...". Μέσω της καρτέλας Browse, πλοηγούμαστε στη θέση όπου είναι αποθηκευμένο το dll και το επιλέγουμε.
2. Στο πεδίο εισαγωγής των namespaces εισάγουμε το namespace DocumentManager πληκτρολογώντας using DocumentManagement;
3. Τώρα, μέσα στο πρόγραμμά μάς μπορούμε να δημιουργήσουμε ένα αντικείμενο DocumentManager. Ο constructor παίρνει ως παράμετρο το path του αρχείου που θέλουμε να διαβάσουμε ή το path του αρχείου που θέλουμε να δημιουργήσουμε:
DocumentManager manager = new DocumentManager("C:\\Users\\Vangos\\Desktop\\Sapmple.docx"); (Το path μπορούμε να το αλλάξουμε οποιαδήποτε στιγμή μεταβάλλοντας την τιμή του property FilePath.)
Αν θέλουμε να διαβάσουμε από το αρχείο της επιλογής μας και να αποθηκεύσουμε το κείμενο γράφουμε:
string text = manager.Read();
Αν θέλουμε να δημιουργήσουμε ένα νέο αρχείο στο path και να τού γράψουμε το κείμενο της επιλογής μας, αρκεί να πούμε:
string text = "Συγχώρα με που δεν καταλαβαίνω τι λένε τα κομπιούτερς κι οι αριθμοί"; manager.Write(text);
Επιπλέον, υπάρχουν τα properties:
ΤΙ ΣΥΜΒΑΙΝΕΙ ΕΣΩΤΕΡΙΚΑ
Ο DocumentManager δέχεται ένα path από το οποίο εντοπίζει το όνομα του αρχείου καθώς επίσης και τον τύπο του. Αν ο τύπος δεν υποστηρίζεται, τότε επιστρέφει error. Αν υποστηρίζεται, τότε καλείται η κατάλληλη μέθοδος ανάγνωσης ή εγγραφής.
DOWNLOADS
Κατεβάστε σκέτο το dll για να το ενσωματώσετε στην εφαρμογή σας (.ΝΕΤ 3.0 και άνω) όπως περιέγραψα πιο πριν.
Κατεβάστε ένα sample πρόγραμμα που χρησιμοποιεί το dll για να παρουσιάσει συνοπτικά και απλά την λειτουργία του.
great library!!
Nice one Vangos :)
Ακριβώς οτι χρειαζόμουν. Θα το δοκιμάσω με την πρώτη ευκαιρία. Μπράβο
Καλή δουλειά,όμως εφόσον η βιβλιοθήκη σου χρησιμοποιεί εσωτερικά MS Office Automation έχει ορισμένα dependecies που οφείλεις να αναφέρεις ;)
Έχεις δίκιο. Πράγματι, η βιβλιοθήκη χρησιμοποιεί το Microsoft.Office.Interop.Word για να διαχειριστεί τα αρχεία docx και doc.
Απλά το ανέφερα διότι υπολογιστές που τρέχουν Windows αλλά δεν διαθέτουν Office ειναι λίγοι μεν,αλλά βρίσκονται εκεί έξω ;)
bdLWez <a href="zxhlmssakpuf.com/.../a>, [url=http://vhlhfjiaqfwr.com/]vhlhfjiaqfwr[/url], [link=http://ekrvstlsnmqt.com/]ekrvstlsnmqt[/link], http://kiueutnynhdi.com/
Cheap NFL,NBA,MLB,NHL [url=http://www.annajerseys.com/]Wholesale Jerseys From China[/url].[url=http://www.annajerseys.com/]China Jerseys[/url],[url=http://www.annajerseys.com/]Sports Jerseys China[/url],[url=www.annajerseys.com/nfl-jerseys-c-1.html]NFL Jerseys China[/url],NBA Jerseys,NHL Jerseys,NFL jerseys For Sale online.All Our Jerseys Are Sewn On and Directly From Chinese Jerseys Factory
[/pre]
[pre]
We Are Professional China Brand Wholesaler,[url=www.anna-wholesale.com/brand-shoes-c-380.html]Wholesale Brand Shoes[/url],Handbags,[url=www.anna-wholesale.com/sports-jerseys-c-379.html]Sports Jerseys China[/url],Jewelry,Hats,[url=www.anna-wholesale.com/sunglasses-c-382.html]Sunglasses From China[/url],Cheap [url=http://www.anna-wholesale.com/]China Wholesael[/url],Wholesale From China,Free Shipping,Cheap Price,7 Days Deliver
Best Converse Online Store From UK,Sale 2011 Newest [url=http://www.sale-converse.com/]Converse All Stars[/url],[url=www.sale-converse.com/converse-flag-shoes-c-130.html]Converse Flag Shoes[/url],Black Converse,White Converse,Navy Converse And So on,[url=http://www.sale-converse.com/]Converse UK[/url],Free Shipping
We are professional jerseys manufacturer from china,wholesal sports jerseys From China,[url=www.anna-jersey.com/nfl-jerseys-c-773.html]NFL jerseys China[/url],[url=www.anna-jersey.com/nhl-jerseys-c-882.html]NHL Jerseys China[/url],[url=www.anna-jersey.com/nba-jerseys-c-821.html]NBA Jerseys China[/url],[url=www.anna-jersey.com/mlb-jerseys-c-694.html]MLB Jerseys China[/url],[url=http://www.anna-jersey.com/]China Jerseys[/url],Free Shipping
[url=http://www.fitflop-uk.com/]fitflops sale UK[/url] [url=http://www.fitflop-uk.com/]fitflop sale[/url]
[url=http://www.china4jersey.com/]Wholesale Jerseys From China[/url],[url=http://www.china4jersey.com/]Wholesale Jerseys[/url],[url=http://www.china4jersey.com/]China Jerseys[/url],NFL Jerseys China Paypal,NHL Jerseys China Paypal,Chinese Jerseys factory,Sewn On Jerseys,Accept Paypal,Free Shipping