逐行阅读word文档

Bat*_*mer 16 .net c# asp.net ms-word office-interop


我正在尝试使用C#读取word文档.我能够获取所有文本,但我希望能够逐行读取并存储在列表中并绑定到gridview.目前,我的代码只返回一个包含所有文本的项目列表(不是根据需要逐行).我正在使用Microsoft.Office.Interop.Word库来读取文件.以下是我的代码:

    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();
Run Code Online (Sandbox Code Playgroud)

Bat*_*mer 21

好.我在这里找到了解决方案.


最终代码如下:

    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();
Run Code Online (Sandbox Code Playgroud)


小智 7

上面的代码是正确的,但它太慢了.我改进了代码,它比上面的代码快得多.

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();
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 6

这个怎么样哟。从文档中获取所有单词,并在返回时将它们拆分或以任何对您来说更好的方式进行拆分。然后转成列表

   List<string> lines = doc.Content.Text.Split('\n').ToList();
Run Code Online (Sandbox Code Playgroud)

  • 它的 \r\a,但是 \r 可以,而不是 \n (2认同)