Foxtable(狐表)用户栏目专家坐堂 → 求助:关于合并数据,怎么实现EXCEL表格跨列或者指定的列数据导入呢?


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

主题:求助:关于合并数据,怎么实现EXCEL表格跨列或者指定的列数据导入呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:关于合并数据,怎么实现EXCEL表格跨列或者指定的列数据导入呢?  发帖心情 Post By:2019/2/14 11:30:00 [显示全部帖子]

求助:关于合并数据,怎么实现EXCEL表格跨列或者指定的列数据导入呢?

excel中有案件编号  案件类别  姓名  承办部门  承办人  承办日期  承办结果

但是实际使用中我只需要案件编号  姓名    承办结果

怎么实现跨列导入?并且比配案件基本信息表中的   案件编号  姓名   处理结果


Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog

dlg.Filter= "Excel文件|*.xls|Access文件|*.mdb" '设置筛选器

If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮

    Dim Book As New XLS.Book(dlg.FileName)

    Dim Sheet As XLS.Sheet = Book.Sheets(0)

    Tables("案件基本信息").StopRedraw()

    Dim nms() As String = {"案件编号","姓名"}

    For n As Integer = 1 To Sheet.Rows.Count -1

        Dim bh As String = sheet(n,0).Text

        Dim dr As DataRow = DataTables("案件基本信息").Find("案件编号 = '" & bh & "'")

        If dr Is Nothing Then '如果不存在同编号的订单

            dr =  DataTables("案件基本信息").AddNew()

        End If

        For m As Integer = 0 To nms.Length - 1

            dr(nms(m)) = Sheet(n,m).Value

        Next

    Next

    Tables("案件基本信息").ResumeRedraw()

End If

[此贴子已经被作者于2019/2/14 11:32:54编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)参考 http://www.foxtable....  发帖心情 Post By:2019/2/14 12:55:00 [显示全部帖子]


有点甜老师   操作不得要领呢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:信息自动化.foxdb

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:公诉信息表.xls

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:批捕信息表.xls

在主窗体中我写入了导入事件代码:可以实现数据导入
但是数据不能按照指定的列进入指定的数据表里
出现了错乱
有木有办法导入EXCEL表中我对应指定的列值,且对应到表中对应的列值呢?多余的部分不用导入。

代码如下:
DataTables("案件基本信息").AllowEdit= True
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("案件基本信息").StopRedraw()
    Dim nms() As String = {"部门受案号","嫌疑人姓名","受理日期","涉嫌案由"}
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = sheet(n,0).Text
        Dim dr As DataRow = DataTables("案件基本信息").Find("部门受案号 = '" & bh & "'")
        If dr Is Nothing Then '如果不存在同编号的订单
            dr =  DataTables("案件基本信息").AddNew()
        End If
        For m As Integer = 0 To nms.Length - 1
            dr(nms(m)) = Sheet(n,m).Value
        Next
    Next
    Tables("案件基本信息").ResumeRedraw()
End If

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim dlg As New OpenFileDialogdlg.F...  发帖心情 Post By:2019/2/15 11:39:00 [显示全部帖子]

有点甜老师  上述方法在导入表和拟写入表中的列名一样的话  已经实现完美导入

但是假设导入表中有一个  移诉意见        案件基本信息表中   对应的  移送意见    怎么匹配呢?列名位置不一定是一一对应的   也存在跨行的情况

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim dlg As New OpenFileDialogdlg.F...  发帖心情 Post By:2019/2/16 1:30:00 [显示全部帖子]

有点甜老师  晚上好
经过测试   该代码是每次都导入数据  并且更新所有列

有没有办法加入一个判断
导入前先判断案件基本信息表中有没有部门受案号存在
如果有   那么该部门受案号不再新增  只是更新所有列值
如果没有  那么该部门受案号新增并且更新所有列值

其中案件基本信息表中 是否关联   这个列值不能因为导入数据而更新的  要确保其永远不变      



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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim dlg As New OpenFileDialogdlg.F...  发帖心情 Post By:2019/2/16 10:10:00 [显示全部帖子]

有点蓝老师     现在数据还是会新增

是想实现在数据导入之前,将导入前的部门受案号去对比案件基本信息表中的部门受案号

如果有部门受案号存在  就不新增数据行,只是更新表中的列值与案件基本信息表中的列值
如果没有部门受案号存在  就新增数据行   更新表中的全部列值到案件基本信息表中

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)本来就是这样处理的,请看懂代码,并...  发帖心情 Post By:2019/2/16 11:40:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:邮件及合并求助.foxdb

经过增加红色部分   依旧问题   上例子麻烦老师了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:批捕.xlsx


[此贴子已经被作者于2019/2/16 13:03:15编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim r As DataRow = t.DataTable.Fin...  发帖心情 Post By:2019/2/18 20:13:00 [显示全部帖子]

有点蓝 老师   
楼上的代码 对应的部门受案号是EXCEL表中第二列   
如果在别的表中是第一列的话  那就又要得改动代码

有没有办法实现   部门受案号不指定是第几列  只要这个EXCEL表中有部门受案号列  就直接判断

谢谢

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)循环取EXCEL表第一行的所有列,如果有...  发帖心情 Post By:2019/2/18 21:57:00 [显示全部帖子]

有点蓝  老师   论坛查找了一下 没有得到要领  老师可以帮忙写写看看么   我学习一下   谢谢!

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)都是编程的基本功来的,还要到论坛搜...  发帖心情 Post By:2019/2/18 22:59:00 [显示全部帖子]

谢谢  已经参考并完美解决  谢谢有点蓝老师

 回到顶部