如何使用StreamReader读取Word文档?

时间:2009-08-21 17:30:15

标签: asp.net ms-word

我有一个asp.net 2.0应用程序。我正在尝试上传文件并读取行并在文本框中显示它们。这适用于.txt文件。但是,如果我做一个单词doc,我会得到各种各样的乱码(看起来像基于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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

  

但如果我做一个单词doc,我会得到各种各样的乱码(看起来像基于xml的格式)。

那是因为Word文档文件包含基于xml的格式。如果您使用愚蠢的文本阅读器(例如Notepad.exe或例如命令行中的type)来查看文件中的内容,您会看到同样的事情。

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

答案 2 :(得分:-1)

您可以使用“Word.ApplicationClass”类

但是你应该阅读Considerations for server-side Automation of Office

从另一位捐助者那里解放出来:

 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();

正如我在下面的评论中所提到的,这可能对你有用: http://npoi.codeplex.com/