How to get text from line number in MS Word

前端 未结 3 1295
迷失自我
迷失自我 2021-01-22 08:00

Is it possible to get text (line or sentence) from a given line number in MS Word using office automation? I mean its ok if I can get either the text in the given line number or

相关标签:
3条回答
  • 2021-01-22 08:29

    Use this if you want to read standard text .txt files Here is something that you can use to read the files with one call

    List<string> strmsWord = 
        new List<string>(File.ReadAllLines(yourFilePath+ YourwordDocName));
    

    if you want to loop thru and see what the items that were returned use something like this

     foreach (string strLines in strmsWord )
     {
       Console.WriteLine(strLines);
     }     
    

    or

    I totally forgot about something Word docs are probably in binary format so look at this and read the contents into a RichTextBox and from there you could either get at the line number you want or load it into a list after words.. this link will show you Reading from a Word Doc if you want to read the XML Formatting of the word Document: here is a good link as to checkout as well ReadXML Format of a Word Document

    This onne is an even easier example reads contents into the ClipBoard Load Word into ClipBoard

    0 讨论(0)
  • 2021-01-22 08:48

    Fortunately after some epic searching I got a solution.

        object file = Path.GetDirectoryName(Application.ExecutablePath) + @"\Answer.doc";
    
        Word.Application wordObject = new Word.ApplicationClass();
        wordObject.Visible = false;
    
        object nullobject = Missing.Value;
        Word.Document docs = wordObject.Documents.Open
            (ref file, ref nullobject, ref nullobject, ref nullobject,
            ref nullobject, ref nullobject, ref nullobject, ref nullobject,
            ref nullobject, ref nullobject, ref nullobject, ref nullobject,
            ref nullobject, ref nullobject, ref nullobject, ref nullobject);
    
        String strLine;
        bool bolEOF = false;
    
        docs.Characters[1].Select();
    
        int index = 0;
        do
        {
            object unit = Word.WdUnits.wdLine;
            object count = 1;
            wordObject.Selection.MoveEnd(ref unit, ref count);
    
            strLine = wordObject.Selection.Text;
            richTextBox1.Text += ++index + " - " + strLine + "\r\n"; //for our understanding
    
            object direction = Word.WdCollapseDirection.wdCollapseEnd;
            wordObject.Selection.Collapse(ref direction);
    
            if (wordObject.Selection.Bookmarks.Exists(@"\EndOfDoc"))
                bolEOF = true;
        } while (!bolEOF);
    
        docs.Close(ref nullobject, ref nullobject, ref nullobject);
        wordObject.Quit(ref nullobject, ref nullobject, ref nullobject);
        docs = null;
        wordObject = null;
    

    Here's the genius behind the code. Follow the link for some more explanation on how it works.

    0 讨论(0)
  • 2021-01-22 08:51
    var word = new Word.Application();
    object miss = Missing.Value;
    object path = @"D:\viewstate.docx";
    object readOnly = true;
    var docs = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, 
                                   ref miss, ref miss, ref miss, ref miss, ref miss, 
                                   ref miss, ref miss, ref miss, ref miss, ref miss, 
                                   ref miss, ref miss);
    string totaltext = "";
    
    object unit = Word.WdUnits.wdLine;
    object count = 1;
    word.Selection.MoveEnd(ref unit, ref count);
    totaltext = word.Selection.Text;
    
    TextBox1.Text = totaltext;
    docs.Close(ref miss, ref miss, ref miss);
    word.Quit(ref miss, ref miss, ref miss);
    docs = null;
    word = null;
    
    0 讨论(0)
提交回复
热议问题