我有一个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
答案 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/