Foxtable(狐表)用户栏目专家坐堂 → [求助]startindex不能小于0


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

主题:[求助]startindex不能小于0

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


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]startindex不能小于0  发帖心情 Post By:2018/4/26 8:27:00 [只看该作者]

上传文件时,提示“startindex不能小于0”。

上传的实例中附有4个word文档,没发现格式上有什么不同。但有两个文档在上传的时报错,请老师帮助测试,是什么原因?

 谢谢!

 


图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:提取测试.rar


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/26 9:25:00 [只看该作者]

'''
Dim dr As DataRow = e.DataRow
Dim file = e.SourceFolder & "\" & e.filename
Select Case e.DataCol.Name
    Case "上传文件"
        e.Subfolder = e.DataRow("承办人")  '将此文件存放在目录名为承办人名称的子目录中.
        Dim app As New MSWord.Application
        try
            Dim doc = app.Documents.Open(file)
            Dim count = Doc.Characters.Count
            Dim rng As MSWord.Range = Doc.Range(Start:=0, End:=count)
            Dim str As String = rng.text
            'For Each s As String In str
                'output.show(s & " " & Asc(s))
            'Next
            msgbox(str)
            '清除段落空行,得到一个不含空行的集合
            Dim idx = str.IndexOf("书  记  员")
            If idx < 0 Then idx = str.IndexOf("书 记 员".replace(" ", chr(-24159)))
            'msgbox(idx)                                   
            Dim idx2 = str.SubString(idx).indexof(Chr(13))
            'msgbox(idx2)
            If idx2 > -1 Then
                str = str.SubString(0, idx+idx2)
            End If
            Dim ary() = str.replace(chr(10), "").split(new Char() {chr(13),chr(11)})
            Dim lst As new List(Of String)
            For Each s As String In ary
                If s.trim() > ""  AndAlso s.contains("受理费") = False AndAlso s.contains("终审") = False AndAlso s.contains("不服") = False  Then
                    lst.add(s)
                End If
            Next
            app.Quit
        catch ex As exception
            msgbox(ex.message)
            app.Quit
        End try
End Select

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


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2018/4/26 11:42:00 [只看该作者]

谢谢老师!

"530"这个文档可以了,“1065”这个文档还报错。

另外,"书 记 员"这三个字的字间距是一个空格吧?

 

If idx < 0 Then idx = str.IndexOf("书 记 员".replace(" ", chr(-24159)))


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/26 12:33:00 [只看该作者]

'''
Dim dr As DataRow = e.DataRow
Dim file = e.SourceFolder & "\" & e.filename
Select Case e.DataCol.Name
    Case "上传文件"
        e.Subfolder = e.DataRow("承办人")  '将此文件存放在目录名为承办人名称的子目录中.
        Dim app As New MSWord.Application
        try
            Dim doc = app.Documents.Open(file)
            Dim count = Doc.Characters.Count
            app.ActiveWindow.Selection.WholeStory
            app.ActiveWindow.Selection.Copy
            'Dim rng As MSWord.Range = Doc.Range(Start:=0, End:=count)
            Dim str As String = ClipBoard.GetText
            ‘For Each s As String In str
            ’    output.show(s & " " & Asc(s))
            ‘Next
            'msgbox(str)
            '清除段落空行,得到一个不含空行的集合
            Dim idx = str.IndexOf("书  记  员")
            If idx < 0 Then idx = str.IndexOf("书 记 员".replace(" ", chr(-24159)))
            'msgbox(idx)
            Dim idx2 = str.SubString(idx).indexof(Chr(13))
            'msgbox(idx2)
            If idx2 > -1 Then
                str = str.SubString(0, idx+idx2)
            End If
            Dim ary() = str.replace(chr(10), "").split(new Char() {chr(13),chr(11)})
            Dim lst As new List(Of String)
            For Each s As String In ary
                If s.trim() > ""  AndAlso s.contains("受理费") = False AndAlso s.contains("终审") = False AndAlso s.contains("不服") = False  Then
                    lst.add(s)
                End If
            Next
            app.Quit
        catch ex As exception
            msgbox(ex.message)
            app.Quit
        End try
End Select

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


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2018/4/28 16:39:00 [只看该作者]

甜老师,有些文书不是"书  记  员",而是"代理书记员",楼上的代码,我加了半句加黑的代码,但是不起作用,请老师看看怎么办?

谢谢!
...

Dim idx = str.IndexOf("书  记  员")
            If idx < 0 Then idx = str.IndexOf("书 记 员".replace(" ", chr(-24159))) or idx = str.IndexOf("代理书记员")

...

[此贴子已经被作者于2018/4/28 16:45:59编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/28 17:07:00 [只看该作者]

            Dim idx = str.IndexOf("书  记  员")
            If idx < 0 Then idx = str.IndexOf("书 记 员".replace(" ", chr(-24159)))

            If idx < 0 Then idx = str.IndexOf("代理书 记 员")


 回到顶部