以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  帮忙完善下EXCLE导入代码吧~~  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=32228)

--  作者:jiskin
--  发布时间:2013/4/27 20:30:00
--  帮忙完善下EXCLE导入代码吧~~

此项目功能希望改成这样:

来源列如果有 A B C D E F 列

接收列如果有  Q U X Y Z

我在控件上修改后分别对应为

A - Q

B - U

D - X

E - Y

F - Z

其中来源列的C 我将其删除匹配

 

目前代码中是不允许删除来源列,如果我删除了C 导入就会出错了 所以能否改写下……

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入excel.foxdb


--  作者:rjh4078
--  发布时间:2013/4/27 22:19:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入excel.foxdb


--  作者:jiskin
--  发布时间:2013/4/27 22:30:00
--  
以下是引用rjh4078在2013-4-27 22:19:00的发言:
 下载信息  [文件大小:480.0 KB  下载次数:1]
图片点击可在新窗口打开查看点击浏览该文件:导入excel.foxdb

 

按图上的设置导入 你就明白什么问题啦

 


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工作簿x.xlsx


--  作者:rjh4078
--  发布时间:2013/4/28 9:03:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入excel (1).foxdb

 

产生错误的原因:

删除字段以后 excel表和数据表的对应关系发生变化

所以先确认对应关系 然后再导入


--  作者:jiskin
--  发布时间:2013/4/28 9:15:00
--  
以下是引用rjh4078在2013-4-28 9:03:00的发言:

 下载信息  [文件大小:480.0 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:导入excel (1).foxdb

 

产生错误的原因:

删除字段以后 excel表和数据表的对应关系发生变化

所以先确认对应关系 然后再导入

如果对应关系就如图H对应第十列 可以正常导入吗?


--  作者:jiskin
--  发布时间:2013/4/28 9:40:00
--  
以下是引用rjh4078在2013-4-28 9:03:00的发言:

 下载信息  [文件大小:480.0 KB  下载次数:4]
图片点击可在新窗口打开查看点击浏览该文件:导入excel (1).foxdb

 

产生错误的原因:

删除字段以后 excel表和数据表的对应关系发生变化

所以先确认对应关系 然后再导入

 

测试了 能正常匹配了 但是出了个错误 再麻烦帮忙看看了

 


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

--  作者:rjh4078
--  发布时间:2013/4/28 10:14:00
--  

不知道你导入的时候的选择是怎样的 

有一点要注意下

excel文件中 被导入的字段名一定要在第一行 并且第一行不能为空

我将关键代码加了下注释 你分析改进下吧

 

 Dim rn As Integer
    Dim cn As Integer
    Dim k As Integer
    Dim k1 As Integer
    Dim cn1 As Integer
    Dim xm As new List(of Integer)
    For k=0 To t2.Rows.count-1
        For cn=0  To sheet.Cols.count-1
            If sheet(0,cn).value=t2.Rows(k)("来源字段") Then \'\'查找导入字段在excel中第一行的列位置,如果找到就将该列位置加入集合xm
                xm.Add(cn)
            End If
        Next
    Next
    If xm.count>0 Then \'\'如果获取到列位置
        For rn=1 To sheet.Rows.count-1
            Dim rr As Row=Tables("表A").addnew
            For k=0 To t2.Rows.count-1
                For tt As Integer=0 To xm.count-1
                    If t2.Rows(k)("来源字段")=sheet(0,xm(tt)).value Then \'\'如果来源字段和接收字段按设定匹配就开始导入
                        rr(t2.Rows(k)("接收字段"))=sheet(rn,XM(tt)).value ‘’将对应excel表的单元格值写入foxtable
                    End If
                Next
               
            Next
        Next
       
    End If

[此贴子已经被作者于2013-4-28 10:21:30编辑过]

--  作者:jiskin
--  发布时间:2013/4/28 10:28:00
--  
以下是引用rjh4078在2013-4-28 10:14:00的发言:

不知道你导入的时候的选择是怎样的 

有一点要注意下

excel文件中 被导入的字段名一定要在第一行 并且第一行不能为空

我将关键代码加了下注释 你分析改进下吧

 

 Dim rn As Integer
    Dim cn As Integer
    Dim k As Integer
    Dim k1 As Integer
    Dim cn1 As Integer
    Dim xm As new List(of Integer)
    For k=0 To t2.Rows.count-1
        For cn=0  To sheet.Cols.count-1
            If sheet(0,cn).value=t2.Rows(k)("来源字段") Then \'\'查找导入字段在excel中第一行的列位置,如果找到就将该列位置加入集合xm
                xm.Add(cn)
            End If
        Next
    Next
    If xm.count>0 Then \'\'如果获取到列位置
        For rn=1 To sheet.Rows.count-1
            Dim rr As Row=Tables("表A").addnew
            For k=0 To t2.Rows.count-1
                For tt As Integer=0 To xm.count-1
                    If t2.Rows(k)("来源字段")=sheet(0,xm(tt)).value Then \'\'如果来源字段和接收字段按设定匹配就开始导入
                        rr(t2.Rows(k)("接收字段"))=sheet(rn,XM(tt)).value ‘’将对应excel表的单元格值写入foxtable
                    End If
                Next
               
            Next
        Next
       
    End If

[此贴子已经被作者于2013-4-28 10:21:30编辑过]

 

好的,谢谢了,ps 以上错误 是在自动匹配的时候 报错的


--  作者:rjh4078
--  发布时间:2013/4/28 11:23:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入excel (1).foxdb