Asp.net 如何使用StreamReader阅读Word文档?
我有一个asp.net 2.0应用程序。我试图上传一个文件,读取行,并在文本框中显示它们。这对于.txt文件很好。但是如果我使用word文档,文本周围会出现各种jibberish(看起来像是基于xml的格式)。这是我的密码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
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所说的绝对正确,但对于我的表单应用程序来说,它工作得非常完美。