Foxtable(狐表)用户栏目专家坐堂 → [求助]如何找出文档包括的字符串


  共有5237人关注过本帖树形打印复制链接

主题:[求助]如何找出文档包括的字符串

帅哥哟,离线,有人找我吗?
huhu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]如何找出文档包括的字符串  发帖心情 Post By:2015/6/29 13:59:00 [显示全部帖子]

如何在一个目录,目录包括好多doc和pdf文档,我如何能做到自动检索这些文档中是否包括某些字符串

不是找出某列包括的字符串,是找出文档是否报告指定的字符串。

这个有办法可以实现吗?


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/6/29 14:22:00 [显示全部帖子]

以下是引用大红袍在2015/6/29 14:18:00的发言:

循环文件夹的所有文件,比较文件名即可。

 

http://www.foxtable.com/help/topics/0341.htm

 

不是找文件名。

比如有3个doc文档,我需要查找这3个文档内容里面是否包括字符串ABC,不是3个文件名是否包括ABC。是内容。


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/6/29 16:13:00 [显示全部帖子]

以下是引用大红袍在2015/6/29 14:35:00的发言:

 你这个设计到文档检索的功能,现在要弄做一个这样的软件出来,也能卖很高的价格,主要是性能方面要优化。

 

 基本,就是打开word、pdf,取出内容检索,具体可看4楼;少量的文件,还是可以查的;大量文件的话,还得考虑怎么每次打开的时候,把内容更新到数据,以后直接去查数据库。

 

http://www.cnblogs.com/Teco/archive/2012/04/20/2460595.html

 

https://msdn.microsoft.com/zh-cn/library/f1f367bx(v=vs.80).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-3

 

 这个这个对我来说太难了,我就想从最简单的做起,比较就一个文档,而且就是word。

我需要做到在文本框输入要查找的字符串,比如A,B,C,123等,点击搜索,然后就自动查找。


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/6/30 15:50:00 [显示全部帖子]

请帮我看看,红色的代码怎么改,才能在msgbox(s)弹出包含关键字的文档目录。

 

Dim app As New MSWord.Application
try
    Dim dlg As New FolderBrowserDialog
    If dlg.ShowDialog = DialogResult.Ok Then
        MessageBox.Show("需要检索的文档目录是:" & dlg.SelectedPath,"提示")
    End If
    For Each file As String In FileSys.GetFiles(dlg.SelectedPath)
        If file.ToLower.EndsWith(".doc") Then
            Dim doc = app.Documents.Open(file)
            Dim gjz As String = Tables("说明书检索").Current("说明书关键字")
            If app.ActiveWindow.Selection.Find.Execute(gjz) = False  Then
                Doc.close
            Else
                Dim s As String = file
                For Each f1 As String In files
                    s = s & vbcrlf & f1
                Next
            End If
        End If
    Next
    mesbox(s)
    app.Visible = True
catch ex As exception
    msgbox(ex.message)
    app.Quit
finally
End try


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/6/30 16:37:00 [显示全部帖子]

Dim app As New MSWord.Application
try
    Dim dlg As New FolderBrowserDialog
    If dlg.ShowDialog = DialogResult.Ok Then
        MessageBox.Show("需要检索的文档目录是:" & dlg.SelectedPath,"提示")
    End If
    Dim s As String = ""
    For Each file As String In FileSys.GetFiles(dlg.SelectedPath)
        If file.ToLower.EndsWith(".doc") Then
            Dim doc = app.Documents.Open(file)
            Dim gjz As String = Tables("说明书检索").Current("说明书关键字")
            If app.ActiveWindow.Selection.Find.Execute(gjz) = False  Then
                Doc.close
               
            Else
                s = s & IIF(s>"", vbcrlf, "") & file
            End If
        End If
    Next
    If s > "" Then
        MessageBox.Show("共计找到包含关键字的文档有count个,目录如下:" & vbcrlf & s,"关键字文档查找",MessageBoxButtons.OK,MessageBoxIcon.None)
    Else
        MessageBox.Show("没有找到包含关键字的文档","关键字文档查找",MessageBoxButtons.OK,MessageBoxIcon.None)
    End If
    app.Visible = True
catch ex As exception
    msgbox(ex.message)
    app.Quit
finally
End try

 

想自动统计出包含关键字文档的数量,怎么统计呢?count这块该怎么改?

        MessageBox.Show("共计找到包含关键字的文档有count个,目录如下:" & vbcrlf & s,"关键字文档查找",MessageBoxButtons.OK,MessageBoxIcon.None)


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/6/30 17:05:00 [显示全部帖子]

你太厉害了,不是一般的厉害。我还想怎么把这几个string放到一个集合里面去,然后统计这个集合的数量。你直接统计回车就ok了。

问题

1.现在只能输入一个关键字,如果属于多个关键字就没法识别了-----这个该怎么改?

2.找到包含关键字的文档,却只找出第一个匹配的关键字,其它的没找出。希望在文档中只要出现关键字的地方都全部自动选中。

3.如果找不到关键字的文档,会自动打开一个wps。不希望打开wps。


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/7/1 16:32:00 [显示全部帖子]

Dim gjzs As String = "Test|Abcdefg|test"---这是你改的

Dim gjz As String = Tables("说明书检索").Current("说明书关键字")-----这是我原来的

我本来是想在文本框里面输入关键字,比如abc,123,百度,然后这个文本框绑定到说明书检索表的说明书关键字列。

目的是希望能把所有出现关键字的地方都标注出来。

Dim gjzs As String = "Test|Abcdefg|test"---这个我把文本框输入abc|123|百度这样可以的,但是只能找到最后一个的搜索结果,比如只找到了百度,而没有找到abc和123.

请问这个该怎么处理?

 


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/7/1 17:32:00 [显示全部帖子]

以下是引用大红袍在2015/7/1 16:38:00的发言:
 不可能,测试没问题。

试了好几遍,只指标出最后的关键字。

Dim gjzs As String = Tables("说明书检索").Current("说明书关键字")


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2015/7/2 17:03:00 [显示全部帖子]

让我先哭一会。炒股累计起来赔了4W多,4套开发版没有了。

 

你的代码我一句也没改,测试的结果只能查到最后一个关键字。测试肯定是有问题的。

Dim gjzs As String = "技术支持|需求"

大师,我的QQ:441276101,远程连接一下,我能给你演示一下吗?


 回到顶部