我可以上传一个文本文件并在文本框中阅读其文本。
现在我想对 .doc 或 .docx 文件做同样的事情。
当我以类似的方式尝试它时,我阅读了文本文件,我在整个文档中得到了一些加密格式的文本。从 .txt 文件中读取的代码如下:
txtReadFiles.Text = My.Computer.FileSystem.ReadAllText(Path)
谁能给我一些建议?
您想要的是 .doc(x) 文件的ifilter。Ifilters 被设计用于 Windows 的索引服务,但它们也经常被其他应用程序使用,以从包含文本的二进制文件中读取文本。IFilter 经常免费发布 - 我相信这包含 doc/docx 文件(和其他 Office 文件)的正确 ifilter。
也就是说,我从未在 .net 中使用过 ifilter 接口,仅在非托管 C++ 中使用过,但它应该是可能的。快速谷歌搜索发现这是一个可能的起点(它有一些要避免的事情的建议和一些代码。我不保证代码有效,您可能需要找到其他东西。但 ifilter 技术本身确实有效,我以前在项目中使用过它。除了 Reader 附带的用于 pdf 的 ifilter,它只是“工作”,几乎没有,最后我检查了。不过,Office ifilter 工作正常。)
Imports Microsoft.Office.Interop.Word 'above public class
If OpenFileDialogFile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
TBfile.Text = OpenFileDialogFile.FileName 'alamat n nama file asli
'-----------
Dim ext As String
ext = Path.GetExtension(OpenFileDialogFile.FileName)
If ext = ".txt" Then
'tampilkan isi file
TB1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialogFile.FileName)
ElseIf ext = ".doc" Then
Dim App As Application = New Application
Dim doc As Document
Try
doc = App.Documents.Open(OpenFileDialogFile.FileName)
Dim co As Integer = doc.Words.Count
For i As Integer = 1 To co
Dim tex As String = doc.Words(i).Text
'tampilkan isi file
TB1.Text += tex
Next
doc.Close()
Catch ex As Exception
End Try
ElseIf ext = ".docx" Then
Dim App As Application = New Application
Dim doc As Document
Try
doc = App.Documents.Open(OpenFileDialogFile.FileName)
Dim co As Integer = doc.Words.Count
For i As Integer = 1 To co
Dim tex As String = doc.Words(i).Text
'tampilkan isi file
TB1.Text += tex
Next
doc.Close()
Catch ex As Exception
End Try
End If
'----------
Else
Call kosongkan()
CBkunci1.Focus()
End If