Foxtable(狐表)用户栏目专家坐堂 → [求助]怎样从类似的excel表格把数据批量导入狐表


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

主题:[求助]怎样从类似的excel表格把数据批量导入狐表

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


加好友 发短信
等级:幼狐 帖子:196 积分:1979 威望:0 精华:0 注册:2012/11/8 14:15:00
  发帖心情 Post By:2020/1/16 21:59:00 [只看该作者]

还有foxtable的附件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报名表.table


 回到顶部
帅哥,在线噢!
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105486 积分:536421 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/17 9:28:00 [只看该作者]


For n As Integer = 0 To Sheet.Rows.Count -1
    For m As Integer = 0 To Sheet.Cols.Count- 1
        ''Output.Show(Sheet(n,m).Value )
        If Sheet(n,m).Value = "姓名:" Then
            r("姓名") = Sheet(n,m+1).Value
        ElseIf Sheet(n,m).Value = "性别:" Then
            r("性别") = Sheet(n,m+1).Value
        ElseIf Sheet(n,m).Value = "身份证号:" Then
            r("身份证号") = Sheet(n,m+1).Value
        End If
    Next
Next
或者
For n As Integer = 0 To Sheet.Rows.Count -1
    For m As Integer = 0 To Sheet.Cols.Count- 1
        ''Output.Show(Sheet(n,m).Value )
        Select Case Sheet(n,m).Value
            Case "姓名:" Then
                r("姓名") = Sheet(n,m+1).Value
            Case "性别:" Then
                r("性别") = Sheet(n,m+1).Value
            Case "身份证号:" Then
                r("身份证号") = Sheet(n,m+1).Value
        End Select
    Next
Next

[此贴子已经被作者于2020/1/17 9:28:53编辑过]

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


加好友 发短信
等级:幼狐 帖子:196 积分:1979 威望:0 精华:0 注册:2012/11/8 14:15:00
  发帖心情 Post By:2020/1/17 21:05:00 [只看该作者]

谢谢你,有点蓝,经你的启发后我写的代码如下,确实能实现预期结果了!!!

Tables("报名表").StopRedraw()
For Each file As String In filesys .GetFiles("f:\报名")
    If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
        Dim Book As New XLS.Book(file)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        ''Output.Show(Sheet.Rows.Count & "," & Sheet.Cols.Count)
        Dim r As Row = Tables("报名表").AddNew()
        For n As Integer = 0 To Sheet.Rows.Count -1
            For m As Integer = 0 To Sheet.Cols.Count- 1
                ''Output.Show(Sheet(n,m).Value )
                If Sheet(n,m).Value = "姓名:" Then
                    r("姓名") = Sheet(n,m+1).Value
                ElseIf Sheet(n,m).Value = "性别:" Then
                    r("性别") = Sheet(n,m+1).Value
                ElseIf Sheet(n,m).Value = "身份证号:" Then
                    r("身份证号") = Sheet(n,m+1).Value
                End If
            Next
        Next
    End If
Next
Tables("报名表").ResumeRedraw()

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


加好友 发短信
等级:幼狐 帖子:196 积分:1979 威望:0 精华:0 注册:2012/11/8 14:15:00
  发帖心情 Post By:2020/1/17 21:50:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报名表王五.xlsx

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报名表李四.xlsx

有点蓝,你好,现在我又有一个新的挑战问题需要请教,在我上传的3个excel附件中,每个excel的sheet1中都有且只有一张人像图片,并且这一张人像图片还是不都在excel的同一个位置的单元格中的,现在我想把这一批excel中有且只有的这一张人像图片全部提取到附件所示的狐表中对应着的“照片”这一列,并分别以 张三.jpg、李四.jpg、王五.jpg来命名保存,如狐表附件的的第2、3、4行所示。
请问对于我提出的问题,若模仿链接http://www.foxtable.com/webhelp/topics/2492.htm中的
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报名表张三.xlsx

以下代码 
Dim fl As String = ProjectPath & "Attachments\" & dr("姓名"& ".jpg"
        If Sheet(4,4).SaveImage(fl) Then 
            
dr("照片") = fileSys.GetName(fl)
其中的
 If Sheet(4,4).SaveImage(fl) Then
这句又该怎么修改,才能实现预期结果?

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


加好友 发短信
等级:幼狐 帖子:196 积分:1979 威望:0 精华:0 注册:2012/11/8 14:15:00
  发帖心情 Post By:2020/1/17 21:52:00 [只看该作者]

我预期的从批量excel中提取数据的狐表附件在此。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报名表.table


 回到顶部
帅哥,在线噢!
有点蓝
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105486 积分:536421 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/17 22:33:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:196 积分:1979 威望:0 精华:0 注册:2012/11/8 14:15:00
  发帖心情 Post By:2020/1/18 21:05:00 [只看该作者]

你好,有点甜,这个vba读取图片确实要慢慢研究一下。
但现在我又有一个新的问题,在我上传的附件“报名表陈六.xlsx”中,与其他excel表格不同的是,单元格内容“姓名”二字后面没有冒号“:”,单元格内容“身份证号”变成了“身份证号码”,请问,要一次性批量提取这种:若某个单元格包含“姓名”二字,则右边的值就被提取到fotable中“姓名"这一列,代码又该怎样修改,我写出的代码如下,但结果出不来,提取不出任何内容,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报名表陈六.xlsx

请问错误的地方需要怎样改正?

Tables("报名表").StopRedraw()
For Each file As String In filesys .GetFiles("f:\报名")
    If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
        Dim Book As New XLS.Book(file)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        ''Output.Show(Sheet.Rows.Count & "," & Sheet.Cols.Count)
        Dim r As Row = Tables("报名表").AddNew()
        For n As Integer = 0 To Sheet.Rows.Count -1
            For m As Integer = 0 To Sheet.Cols.Count- 1
                ''Output.Show(Sheet(n,m).Value )
                If Sheet(n,m).Value Like "'%姓名%'" Then
                    r("姓名") = Sheet(n,m+1).Value
                ElseIf Sheet(n,m).Value Like "'%性别%'" Then
                    r("性别") = Sheet(n,m+1).Value
                ElseIf Sheet(n,m).Value Like "'%身份证号%'" Then
                    r("身份证号") = Sheet(n,m+1).Value
                End If
            Next
        Next
    End If
Next
Tables("报名表").ResumeRedraw()

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


加好友 发短信
等级:幼狐 帖子:196 积分:1979 威望:0 精华:0 注册:2012/11/8 14:15:00
  发帖心情 Post By:2020/1/18 21:06:00 [只看该作者]

我是参考了http://www.foxtable.com/webhelp/topics/1647.htm这个链接之后修改出的代码。

 回到顶部
帅哥,在线噢!
有点蓝
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105486 积分:536421 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/19 9:54:00 [只看该作者]

代码中使用like进行字符比较参考:http://www.foxtable.com/webhelp/topics/0222.htm

在筛选条件中使用like查询参考:http://www.foxtable.com/webhelp/topics/0102.htm

上面是2种不同的用法,不能混用,17楼要使用第一种用法

If Sheet(n,m).Value Like "*姓名*" Then

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


加好友 发短信
等级:幼狐 帖子:196 积分:1979 威望:0 精华:0 注册:2012/11/8 14:15:00
  发帖心情 Post By:2020/1/19 23:27:00 [只看该作者]

好的,有点蓝,谢谢你,我现在把代码改写成如下,结果就能出来了。
Tables("报名表").StopRedraw()
For Each file As String In filesys .GetFiles("f:\报名")
    If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
        Dim Book As New XLS.Book(file)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        ''Output.Show(Sheet.Rows.Count & "," & Sheet.Cols.Count)
        Dim r As Row = Tables("报名表").AddNew()
        For n As Integer = 0 To Sheet.Rows.Count -1
            For m As Integer = 0 To Sheet.Cols.Count- 1
                ''Output.Show(Sheet(n,m).Value )
                If Sheet(n,m).Value Like "*姓名*" Then
                    r("姓名") = Sheet(n,m+1).Value
                ElseIf Sheet(n,m).Value Like "*性别*" Then
                    r("性别") = Sheet(n,m+1).Value
                ElseIf Sheet(n,m).Value Like "*身份证号*" Then
                    r("身份证号") = Sheet(n,m+1).Value
                End If
            Next
        Next
    End If
Next
Tables("报名表").ResumeRedraw()

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