Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

Îåêßíçóå áðü ôï ìÝëïò pontifikas. Τελευταία δημοσίευση από το μέλος pontifikas στις 20-03-2007, 11:38. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-03-2007, 11:07 26461

    Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    Έχω τον παρακάτω κώδικα. Με φιλοδοξία να αλλάξω ένα Word file.Το Word file είναι ένα φυσιολογικό, υγειές word file και εγώ το μόνο που θέλω να κάνω
    είναι κάτι που δεν πειράζει χαρακτήρες ελέγχου(πχ να αλλάξω τα 'α' με 'β')

    Encoding enc = Encoding.Unicode;
    StreamReader sr = new StreamReader(fileDest,enc);

    string temp = sr.ReadToEnd();

    sr.Close();

    temp = Do_Sth_that_really_I_Swear_God_doesnt_change_text_formatting(temp);

    StreamWriter sw = new StreamWriter(fileDest,false,enc);
    sw.Write(temp);
    sw.Close();

    return;



    Το πρόβλημα είναι ότι όταν πάω να ανοίξω το αρχείο, μου βγάζει μεν τις αλλαγές αλλά και τους χαρακτήρες ελέγχου(τετραγωνάκια κτλ).
    Σαν να έκανα copy paste το string που μου επέστρεφε η temp. Κάτι μάλλον χαλάει κατά το read αλλά τί?
  •  15-03-2007, 11:55 26463 σε απάντηση της 26461

    Απ: Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    Διαβάζεις ένα binary αρχείο σαν text και το φορτώνεις σαν string. Σίγουρα εκεί μέσα υπάρχουν ζευγάρια από bytes που δεν αποτελούν έγκυρο χαρακτήρα Unicode και είτε απορρίπτονται είτε αντικαθίστανται με κάποιον έγκυρο, οπότε το αρχείο σου καταστρέφεται.
    Θα πρέπει να διαβάζεις το αρχείο με BinaryReader, κατά προτίμηση λίγο λίγο γιατί μπορεί να είναι μεγάλο, και να το γράφεις πίσω με BinaryWriter. Και το χαρακτήρα που ψάχνεις να τον αναζητάς σαν bytes.
    Πάντως εξακολουθεί να είναι λίγο ανορθόδοξη η μέθοδός σου. Γιατί δε χρησιμοποιείς VSTO;

    Νατάσα Μανουσοπούλου
  •  15-03-2007, 13:25 26471 σε απάντηση της 26463

    Απ: Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    Απεναντίας εγώ νομίζω ότι είναι το πιο φυσιολογικό που κάποιος μπορεί να κάνει αν δεν θέλει να μπλέξει με πράγματα που δεν ξέρει(και δεν προλαβαίνει να μάθει).
    VSTO δεν χρησιμοποίησα γιατί πρώτη φορά το ακούω . Μέχρι τώρα χρησιμοποιούσα interop assemplies  αλλά μου παρουσιάστηκε μια περίπτωση που κάποιος περιορισμός μου δημιουργεί πρόβλημα και έχω αρχίσει να ψάχνομαι για άλλα.

    Δυστυχώς, και η λύση του binary reader δεν μου φαίνεται πολύ εύχρηστη για αυτά που σκοπεύω να κάνω στο κείμενοDevil(διότι θέλω να κάνω κάτι παραπάνω από αντικατάσταση ενός χαρακτήρα).
    Sad
  •  15-03-2007, 15:34 26481 σε απάντηση της 26471

    Απ: Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    One way -> VSTO. VSTO = Visual Studio Tools for Office. Γενικώς σου δίνει ένα κάρο τρόπους να αλληλεπιδράσεις με το Office είτε σε επίπεδο εφαρμογής, είτε σε επίπεδο file format (.doc, .xls κλπ κλπ).

    Ασε που γενικά μπορείς να το μάθεις εύκολα, ενώ προσωπικά πιστεύω ότι οι λίγες ώρες εκμάθησης, σου γλυτώνουν πολύ κόπο για το μέλλον και γενικά εάν πας να το κάνεις με off-road μέθοδο.

    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  16-03-2007, 08:34 26496 σε απάντηση της 26481

    Απ: Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    Του έριξα μια ματιά αλλά δεν μπορώ να καταλάβω την διαφορά από τα Interop Assemplies! Και interop assemplies χρησιμοποιώ ήδη και έχω πρόβλημα.

    Βασικά το Replacement object  δεν χωράει πολλούς χαρακτήρες.

    private void SearchReplace() 
    {
    object replaceAll = Word.WdReplace.wdReplaceAll;

    Application.Selection.Find.ClearFormatting();
    Application.Selection.Find.Text = "find me";

    Application.Selection.Find.Replacement.ClearFormatting();
    Application.Selection.Find.Replacement.Text = "Found";

    Application.Selection.Find.Execute(
    ref missing, ref missing, ref missing, ref missing, ref missing,
    ref missing, ref missing, ref missing, ref missing, ref missing,
    ref replaceAll, ref missing, ref missing, ref missing, ref missing);
    }
    αντί για found εγώ έχω ένα μακρυνάρει ΝΑ(μετα συγχωρήσεως Stick out tongue) . Και μόλις ο pc πάει να περάσει από εκεί τρώω exception.
    Για μικρά replacement strings δεν έχει πρόβλημα
  •  17-03-2007, 11:13 26570 σε απάντηση της 26496

    Απ: Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    Απο περιέργεια, τι exception παίρνεις; Έχει κάποιο inner exception; Υπάρχει κάποιος τρόπος να δείς το "root issue", που να σου δίνει περισότερες πληροφορίες για το λάθος, στο επίπεδο του Word application;

    Και,  αν κάνεις την ίδια διαδικασία .. manually στο Word, μετά πάνε όλα οκ; Big Smile

    Angel
    O:]
  •  20-03-2007, 10:53 26730 σε απάντηση της 26570

    Απ: Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    Το σφάλμα λέει "Invalid Parameter Length".
    Βρήκα όμως την λύση η οποία τελικά ήταν το Copy κάποιων selected regions Και Paste πάνω στα επιθυμητά selected regions(πάντα οι απλές ιδέες έρχονται τελευταίες στον νου).Angry
  •  20-03-2007, 11:38 26734 σε απάντηση της 26730

    Απ: Ανάγνωση και μεταβολή word αρχείου με Stream reader- writer

    Και λίγος κώδικας:

    object cStart,cStart,pEnd,pEnd;
    .
    .
    //Give some integer values to cStart, cEnd
    .
    .
    Word.Range copyRange = WordDoc.Range(ref cStart, ref cEnd); //WordDoc= typeof(Word.Document) copyRange.Select();
    WordDoc.Application.Selection.Copy();
    .
    .
    //Give some integer values to pStart, pEnd
    .
    .
    Word.Range pasteRange = WordDoc.Range(ref pStart, ref pEnd);
    pasteRange.Select();
    WordDoc.Application.Selection.Paste();

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems