Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Asp.net 如何使用StreamReader阅读Word文档?_Asp.net_Ms Word - Fatal编程技术网

Asp.net 如何使用StreamReader阅读Word文档?

Asp.net 如何使用StreamReader阅读Word文档?,asp.net,ms-word,Asp.net,Ms Word,我有一个asp.net 2.0应用程序。我试图上传一个文件,读取行,并在文本框中显示它们。这对于.txt文件很好。但是如果我使用word文档,文本周围会出现各种jibberish(看起来像是基于xml的格式)。这是我的密码 Dim s As New StringBuilder Dim rdr As StreamReader If FileUpload1.HasFile Then rdr = New StreamReader(FileUpload1.Fi

我有一个asp.net 2.0应用程序。我试图上传一个文件,读取行,并在文本框中显示它们。这对于.txt文件很好。但是如果我使用word文档,文本周围会出现各种jibberish(看起来像是基于xml的格式)。这是我的密码

    Dim s As New StringBuilder
    Dim rdr As StreamReader

    If FileUpload1.HasFile Then

        rdr = New StreamReader(FileUpload1.FileContent)

        Do Until rdr.EndOfStream
            s.Append(rdr.ReadLine() & ControlChars.NewLine)
        Loop

        TextBox1.Text = s.toString()

    End If

StreamReader不支持Word格式的文件。它只是读取字符流。您需要使用某种专门支持Word的库。这根本不是一个容易的问题-并不总是清楚如何将Word文档的任何部分转换为纯文本。

您可以使用“Word.ApplicationClass”类

然而你应该阅读

从另一个捐赠者那里解放出来:

 Word.ApplicationClass wordApp=new ApplicationClass();

    object file=path;

    object nullobj=System.Reflection.Missing.Value;  

    Word.Document doc = wordApp.Documents.Open(

    ref file, ref nullobj, ref nullobj,

                                          ref nullobj, ref nullobj, ref nullobj,

                                          ref nullobj, ref nullobj, ref nullobj,

                                          ref nullobj, ref nullobj, ref nullobj);

    doc.ActiveWindow.Selection.WholeStory();

    doc.ActiveWindow.Selection.Copy();

    IDataObject data=Clipboard.GetDataObject();

    txtFileContent.Text=data.GetData(DataFormats.Text).ToString();

    doc.Close();
正如我在下面的评论中提到的,这可能对您有帮助:

但是如果我使用word文档,文本周围会出现各种jibberish(看起来像是基于xml的格式)

这是因为Word文档文件包含基于xml的格式。如果使用哑文本读取器(例如,
Notepad.exe
,或从命令行中键入
查看文件中的内容,您将看到相同的情况


要从周围的格式中提取文本,您需要使用软件(例如Word本身,
winword.exe
)以纯文本格式保存或获取文档。

想象一个97样式的Word文档。美梦;)97样式的Word文档没有“基于xml的格式”,但支持COM自动化(这可能允许您自动使用它将文档保存为文本)。-1:在ASP.NET应用程序这样的服务器应用程序中这样做是非常糟糕的。它不受支持,可能有许可的影响,并且经常以难以调试的不可预测的方式失败。最好的办法是:不要在服务器应用程序中使用。我同意这不是最好的解决方案,可能会导致锁定,不推荐使用,但如果使用正确,也可以使用。他的情景值得一试/一提。这里还有另一个选项:+1:虽然John所说的绝对正确,但对于我的表单应用程序来说,它工作得非常完美。