Laden...

StreamReader Dateiinhalt

Erstellt von jordan m vor 20 Jahren Letzter Beitrag vor 19 Jahren 2.996 Views
J
jordan m Themenstarter:in
8 Beiträge seit 2004
vor 20 Jahren
StreamReader Dateiinhalt

Hallo,

ich wollte bestimmte Textinhalte in Dateien suchen, z.B. "hallo".
Wie geht man da am besten vor? Ich benutze momentan dafür die
StreamReader-Klasse. Das geht aber erstmal nur mit txt-Dateien. Bei
Word-Dateien findet er den gesuchten Text nicht obwohl er drinne ist.

StreamReader Dateiinhalt = new StreamReader(Datei);

string Inhalt = Dateiinhalt.ReadToEnd();

In der Variable Inhalt befindet sich dann "" sowas. Ist StreamReader überhaupt der richtige Weg?

445 Beiträge seit 2003
vor 20 Jahren

Hi,

das ist etwas komplizierter: Du musst per Automation den COM-Server "Word" ansteuern.

Allerdings rate ich dir zu einer einfacheren Möglichkeit:
nimm statt .doc einfach .rtf Dateien. Diese kannst du auch formatieren. Diese verwendet man mit der "RichTextBox". Mid loadFile() lädst du ganz einfach aus einem Übergebenen File-Stream eine .rtf-Datei. Die richTextBox hat sehr viele Methoden zum einfachen bearbeiten.

Wenn du dich für automation entschieden hast, sag bescheid. Ich (oder jemand anders) kann es dir dann erklähren.

Viele Grüße
www.mycsharp.de

Bitte vor dem Fragen immer in die FAQ schauen und die Suche benutzen. Danke.

J
jordan m Themenstarter:in
8 Beiträge seit 2004
vor 20 Jahren

🙂) Ich nimm die automation.

O
18 Beiträge seit 2003
vor 19 Jahren

Das mit der Automation würde mich auch interressieren, weil ich auch Word docs erstellen muss 😦.
Leider habe ich unter dem Stichwort automation nicht viel gefunden 😦.

Wie geht das denn nun?

Danke + Gruß
Olaf

445 Beiträge seit 2003
vor 19 Jahren

Hi,

Mit automation kann man andere Programme, die COM unterstützen (z.B. MS Office), steuern. Da Automation nicht viel mit .net zu tun hat (sondern mit COM), kann es da aber auch einige Probleme geben. Programme, die sich per Automation steuern lassen, müssen eine Klassenbibliotek zur Verfügung stellen, über die sich das Programm dann steuern lassen kann. Man muss, um die Klassenbibliotek des jeweiligen Programms nutzen zu können, vorher einen Verweis darauf im eigenen Programm plazieren (für Word: Microsoft Word x.x Object Library).
Von der Entwicklungsumgebung wird dann eine sog. Wrapperbibliotek angelegt, die eine Schnittstelle zwischen .net und COM darsellt (z.B. Microsoft.Office.Interopt.Word). Mit den Wrappern kann man dann teoretisch so wie mit .net Klassen umgehen (es sind ja .net Klassen). (Hinweis: Fur Office XP und 2003 stellt MS sog. Primary Interopt Assemblies bereit, die in der GAC installiert werden und echte .net Objekte sind).

Achtung: in der Praxis kann es Probleme geben, weil C# keine optionale Parameter kennt. Daher muss für jeden nicht genutzten Parameter System.Reflection.Missing übergeben werden.Beispiel, wie man einen Text in Word anzeigt:


Word._Application wA;
Word._Document wD

private void ShowInWord()
{
    object omissing = System.Reflection.Missing.Value;
    wA = new Word.ApplicationClass();
    wA.Visible = true;
    wD = wA.Documents.Add(ref omissing, ref omissing, ref omissing, ref              omissing);
    wD.Application.Selection.Paste();
    wD.ActiveWindow.ActivePane.View.Type = Word.WdView.wdPrintView;
    wD.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdwdSeekCurrentPageHeader;
    wD.Application.Selection.Text = "Gedruckt aus C#";
    wD.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekMainDocument;
}

Beachte: bei dem Beispiel muss der einzufügende Text in der Zwischenablage sein.

Viele Grüße
www.mycsharp.de

Bitte vor dem Fragen immer in die FAQ schauen und die Suche benutzen. Danke.