Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 逐行读取word文档_C#_Asp.net_.net_Ms Word_Office Interop - Fatal编程技术网

C# 逐行读取word文档

C# 逐行读取word文档,c#,asp.net,.net,ms-word,office-interop,C#,Asp.net,.net,Ms Word,Office Interop,我正试图用C#读word文档。我能够获取所有文本,但我希望能够逐行阅读,存储在列表中并绑定到gridview。目前,我的代码只返回一个包含所有文本的项目列表(而不是按需要逐行返回)。我正在使用Microsoft.Office.Interop.Word库来读取文件。以下是我至今的代码: Application word = new Application(); Document doc = new Document(); object fileName = path;


我正试图用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();
Application word=新应用程序();
单据单据=新单据();
对象文件名=路径;
//为缺少的参数定义要传递给API的对象
缺少对象=System.Type.missing;
doc=word.Documents.Open(参考文件名,
缺少参考,缺少参考,缺少参考,缺少参考,
缺少参考,缺少参考,缺少参考,缺少参考,
缺少参考,缺少参考,缺少参考,缺少参考,
参考缺失,参考缺失,参考缺失);
String read=String.Empty;
列表数据=新列表();
foreach(文档中的范围tmpRange.StoryRanges)
{
//read+=tmpRange.Text+“
”; data.Add(tmpRange.Text); } ((_Document)doc.Close(); (_应用程序)word.Quit(); GridView1.DataSource=数据; GridView1.DataBind();
好的。我找到了解决办法


最终代码如下:

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();
Application word=新应用程序();
单据单据=新单据();
对象文件名=路径;
//为缺少的参数定义要传递给API的对象
缺少对象=System.Type.missing;
doc=word.Documents.Open(参考文件名,
缺少参考,缺少参考,缺少参考,缺少参考,
缺少参考,缺少参考,缺少参考,缺少参考,
缺少参考,缺少参考,缺少参考,缺少参考,
参考缺失,参考缺失,参考缺失);
String read=String.Empty;
列表数据=新列表();
对于(int i=0;i
上面的代码是正确的,但速度太慢了。 我改进了代码,比上面的代码快得多

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();
列表数据=新列表();
应用程序app=新应用程序();
Document doc=app.Documents.Open(ref readFromPath);
foreach(文件段落中的段落objParagraph)
Add(objParagraph.Range.Text.Trim());
((_Document)doc.Close();
((_应用程序)app.Quit();

这个怎么样。从文档中获取所有单词,并在返回时拆分它们,或者其他对您更有利的内容。然后进入列表

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

在my code@open方法中,它显示路径无效,并且某些“COMException未被处理”。从ASP.NET或其他服务器技术使用Office互操作是一个可怕的想法。这些API是为在桌面应用程序中使用而编写的,用于自动化Office(一套桌面应用程序)。服务器应用程序在许多方面都不同,因此在其中使用Office互操作是一个非常非常糟糕的主意。它也不受Microsoft支持,可能会违反您的Office许可证。请参阅上面列出的所有代码。他说,我将在本周末开始一个项目,该项目将读取word文件,然后取出双引号之间的所有代码,并插入一个变量“a”。然后,我必须将逗号后的部分替换为“A”,B。对于一个想对代码进行统计的作家来说。我会把我的代码贴出来让大家看。有什么特殊的导入需要完成吗?我会使用像DocX这样的轻量级库。@Hamdi,谢谢,我不知道。我已经尝试过了,它肯定比互操作更易于使用。再次感谢。从ASP.NET或其他服务器技术使用Office互操作是一个可怕的想法。这些API是为在桌面应用程序中使用而编写的,用于自动化Office(一套桌面应用程序)。服务器应用程序在许多方面都不同,因此在其中使用Office互操作是一个非常非常糟糕的主意。它也不受Microsoft支持,可能会违反您的Office许可证。查看其\r\a,但\r可以,而不是\n