Foxtable(狐表)用户栏目专家坐堂 → 可否把一个个word文档数据汇总到表单里去呀


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

主题:可否把一个个word文档数据汇总到表单里去呀

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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2022/10/13 20:46:00 [只看该作者]

老师,抱歉。我基础确实太差了,只能按照您做的代码似是而非的改一下,代码的意思也不懂。像是这个代码,我执行了,选择了我的文件,但是工号的值取不到。取出来是"—"。因为我是一段文字里的工号,不是表格。是不是要用别的办法取值啊?相片那个我是完全不懂,现在先放一放,想先学会文字内容取值,谢谢老师!
Dim dlg As new OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    Dim app As New MSWord.Application
    try
        If FileSys.DirectoryExists(ProjectPath & "Attachments") = False Then
            FileSys.CreateDirectory(ProjectPath & "Attachments/")
        End If
        For Each filename As String In dlg.FileNames
            
            Dim doc = app.Documents.Open(fileName)
            Dim nr As Row = Tables("表A").AddNew
            Dim t = doc.Tables(1)
            Dim text = t.Cell(1, 2).Range.Text.ToString()
            text = text.Substring(0, text.Length - 2)
            nr("工号") = text
            '-------------
            app.ActiveWindow.Selection.WholeStory
            For Each shape As object In app.ActiveWindow.Selection.InlineShapes
                If shape.Type = MSWord.WdInlineShapeType.wdInlineShapePicture
                    Dim img As Byte() = shape.Range.EnhMetaFileBits
                    Dim bmp As new Bitmap(new IO.MemoryStream(img))
                    bmp.Save(ProjectPath & "Attachments/" & nr("工号") & ".jpg")
                End If
            Next
            nr("第四列") = nr("工号") & ".jpg"
            Doc.Close
        Next
    catch ex As exception
        msgbox(ex.message)
    finally
        app.Quit
    End try
End If

[此贴子已经被作者于2022/10/13 20:48:23编辑过]

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/13 20:48:00 [只看该作者]

表格是怎么样的?要把哪些内容填入表格里?

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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2022/10/13 20:53:00 [只看该作者]

表格是这样的:
 工号  目前所在地(填写厂区或**省**市**区),在作答区域点击 上传行程卡截图预计12月所在地今后2个月内是否有出行计划(本次演练除外),请填写是或否行程码   
  工号 指定段位置指定段位置   作答的位置   图片

我不知道这对不对。但我的问卷就是这样的题干,其中甚至有一题还有图片,不晓得列名和代码里面是否要原文照抄?还是说不需要题干,用行数来找值呢?我的基础数据就是之前传的这个
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:试验.zip

麻烦老师帮帮我

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/13 21:34:00 [只看该作者]

Dim app As New MSWord.Application
Try
    Dim doc = app.Documents.Open("D:\问题\试验.doc")
    Dim r As Row = Tables("表A").AddNew
    Dim n12 As Boolean
    For Each k As Object In doc.Paragraphs
        Dim s As String = k.Range.text.tostring
        If s.Contains("工号:") Then
            Dim idx As Integer = s.IndexOf("工号:")
            MsgBox(s.Substring(idx))
            r("工号") = s.Substring(idx)
        ElseIf s.Contains("1.预计12月所在地") Then
            n12 = True
        ElseIf s.Contains("第一空:") Then
            If n12 = True Then
                Dim idx As Integer = s.IndexOf("第一空:")
                MsgBox(s.Substring(idx))
                r("预计12月所在地") = s.Substring(idx)
                n12 = False
            End If 
        End If 
        'output.show(k.Range.text.tostring)
    Next
    app.ActiveWindow.Selection.WholeStory
    For Each shape As Object In app.ActiveWindow.Selection.InlineShapes
        Try
            Output.Show(shape.name)
        Catch ex2 As exception
            msgbox(ex2.message)
        End Try
        If shape.Type = MSWord.WdInlineShapeType.wdInlineShapePicture Then
            Dim img As Byte() = shape.Range.EnhMetaFileBits
            Dim bmp As New Bitmap(New IO.MemoryStream(img))
            'bmp.Save(ProjectPath & "Attachments/00011.jpg")
            bmp.Save(ProjectPath & "Attachments/" & r("工号") & ".jpg")
            r("第四列") = r("工号") & ".jpg"
        End If
    Next
    app.quit
Catch ex As exception
    msgbox(ex.message)
    app.quit
End Try

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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2022/10/13 22:44:00 [只看该作者]

非常感谢老师!工号的值可以取了,感觉是找到指定字符后面的数值取出来,这样的方法?我是外行,只能看到这些。但是后面报错了,还是要麻烦老师帮助我,说是有非法字符,找不到name什么的,但我好像没看到name?麻烦老师,帮帮我,谢谢!

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

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


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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/13 23:38:00 [只看该作者]

找不到name的代码是调试用的,去掉即可

路径有非法字符应该是工号有特殊字符导致,弹出工号看看是什么内容

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


加好友 发短信
等级:一尾狐 帖子:476 积分:4039 威望:0 精华:0 注册:2011/11/2 8:55:00
  发帖心情 Post By:2022/10/14 10:48:00 [只看该作者]

老师,我取不到工号以外的数值,是该怎么做呢?比如我要取“预计12月所在地”的值,工作表里列名也是叫这个,但代码这段:
ElseIf s.Contains("预计12月所在地") Then
            n12 = True
        ElseIf s.Contains("第一空:") Then
            If n12 = True Then
                Dim idx As Integer = s.IndexOf("第一空:")
                MsgBox(s.Substring(idx))
                r("预计12月所在地") = s.Substring(idx)
                n12 = False
            End If 
        End If 
取不到,我改了第一句的汉字名称,和表列名一致也不行,是不是必须和word文档里的叫法完全一致呀

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/14 10:55:00 [只看该作者]

ElseIf s.Contains("预计12月所在地这里判断的是word里的内容和列名没有关系") Then
            n12 = True
        ElseIf s.Contains("第一空:这里判断的是word里的内容和列名没有关系") Then

 回到顶部
总数 18 上一页 1 2