it-swarm.com.de

Zeile für Zeile aus dem Word-Dokument lesen


Ich versuche, ein Word-Dokument mit C # zu lesen. Ich kann den gesamten Text abrufen, möchte aber zeilenweise und in einer Liste speichern und an eine Rasteransicht binden lesen können. Derzeit gibt mein Code eine Liste mit nur einem Element mit dem gesamten Text zurück (nicht wie gewünscht zeilenweise). Ich benutze die Bibliothek Microsoft.Office.Interop.Word, um die Datei zu lesen. Unten ist mein Code bis jetzt:

    Application Word = new Application();
    Document doc = new Document();

    object fileName = path;
    // Define an object to pass to the API for missing parameters
    object missing = System.Type.Missing;
    doc = Word.Documents.Open(ref fileName,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing);

    String read = string.Empty;
    List<string> data = new List<string>();
    foreach (Range tmpRange in doc.StoryRanges)
    {
        //read += tmpRange.Text + "<br>";
        data.Add(tmpRange.Text);
    }
    ((_Document)doc).Close();
    ((_Application)Word).Quit();

    GridView1.DataSource = data;
    GridView1.DataBind();
16
Bat_Programmer

In Ordnung. Ich habe die Lösung gefunden hier .


Der endgültige Code lautet wie folgt:

    Application Word = new Application();
    Document doc = new Document();

    object fileName = path;
    // Define an object to pass to the API for missing parameters
    object missing = System.Type.Missing;
    doc = Word.Documents.Open(ref fileName,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing);

    String read = string.Empty;
    List<string> data = new List<string>();
    for (int i = 0; i < doc.Paragraphs.Count; i++)
    {
        string temp = doc.Paragraphs[i + 1].Range.Text.Trim();
        if (temp != string.Empty)
            data.Add(temp);
    }
    ((_Document)doc).Close();
    ((_Application)Word).Quit();

    GridView1.DataSource = data;
    GridView1.DataBind();
21
Bat_Programmer

Der obige Code ist korrekt, aber zu langsam. Ich habe den Code verbessert und er ist viel schneller als der obige.

List<string> data = new List<string>();
Application app = new Application();
Document doc = app.Documents.Open(ref readFromPath);

foreach (Paragraph objParagraph in doc.Paragraphs)
    data.Add(objParagraph.Range.Text.Trim());

((_Document)doc).Close();
((_Application)app).Quit();
6
Pratik Anjania

Wie wäre es mit diesem yo. Holen Sie sich alle Wörter aus dem Dokument und teilen Sie sie bei der Rückkehr oder was auch immer für Sie besser ist. Dann verwandle dich in eine Liste

   List<string> lines = doc.Content.Text.Split('\n').ToList();
3
Chris