以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]excel 导入时存在的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65382)

--  作者:hch
--  发布时间:2015/3/14 22:05:00
--  [求助]excel 导入时存在的问题
问题1、用高速合并方式虽可以将外部excel 数据导入狐表中,但导入时发现相同数据无覆盖导入,出现相同数据重复导入,采取“更新同主键记录”或“跳过同主键记录”方法导入,仍出现相同数据重复导入,如何解决重复导入问题?问题2:用高速导入外部的excel 数据,发现导入时需新命名一个新表名才能导入数据,如何将外部的excel 数据直接导入到与狐表中表结构一致的表中?
--  作者:有点甜
--  发布时间:2015/3/15 9:45:00
--  

 编写代码合并

 

 http://www.foxtable.com/help/topics/2334.htm

 


--  作者:hch
--  发布时间:2015/3/15 12:54:00
--  
     编写好代码放在狐表中什么地方,点击那个按钮就可完成“导入合并统计”工作。我参考帮助文件提示写的“合并统计”代码字段如下:费心看看有何问题存在,若有问题请给与正确代码提示。
Dim Book As New XLS.Book("C:\\Documents and Settings\\Administrator\\桌面\\学术论文.xls") 
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("学术论文").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"年份","作者姓名","科别","职称","职称级别","论文题目","刊登杂志名称","发表期刊年月","登记时间","期刊类别","专业分类","著作情况"} 
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 
For n As Integer = 1 To Sheet.Rows.Count -1 
    Dim bh As String = sheet(n,0).Text 
    If DataTables("学术论文").Find("论文题目= \'" & bh & "\'") Is Nothing Then \'如果不存在同“题目”的学术论文
        Dim r As Row = Tables("学术论文").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("学术论文").ResumeRedraw()

--  作者:有点甜
--  发布时间:2015/3/15 14:08:00
--  

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

 

改成

 

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


--  作者:hch
--  发布时间:2015/3/16 9:59:00
--  
    把修改好的代码字段放置在什么地方,操作那个菜单下按钮就可正常导入合并数据。
--  作者:Bin
--  发布时间:2015/3/16 10:05:00
--  
自己设计一个菜单按钮.放到Click事件去
--  作者:hch
--  发布时间:2015/3/16 11:47:00
--  
     按你的提示在杂项菜单下设计了“自定义合并”菜单按钮,把代码放在该菜单按钮的Click事件中后测试无法完成合并导入,现将文件传上请具体
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理系统.table

指导一下,谢谢。

--  作者:有点甜
--  发布时间:2015/3/16 11:52:00
--  

 测试了一下,下面这段代码没有问题

 

Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("学术论文").StopRedraw()
    \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
    Dim nms() As String = {"年份","作者姓名","科别","职称","职称级别","论文题目","刊登杂志名称","发表期刊年月","登记时间","期刊类别","专业分类","著作情况"}
    \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = sheet(n,5).Text
        If DataTables("学术论文").Find("论文题目= \'" & bh & "\'") Is Nothing Then \'如果不存在同"题目"的学术论文
            Dim r As Row = Tables("学术论文").AddNew()
            For m As Integer = 0 To nms.Length - 1
                r(nms(m)) = Sheet(n,m).Value
            Next
        End If
    Next
    Tables("学术论文").ResumeRedraw()
End If

 

1、你Datacolchanged事件的代码请删除;

 

2、你的excel文件格式一定要正确,我先导出,再合并,没有问题。


--  作者:hch
--  发布时间:2015/3/16 19:54:00
--  
非常感谢有点甜老师耐心指导,问题解决。
--  作者:hch
--  发布时间:2015/3/17 17:20:00
--  
如果我在导入合并其他表,类似该结构时,代码是不是只需改变颜色改变部分的代码内容即可,
    能否把 Dim bh As String = sheet(n,5).Text  这段代码的具体含义给与说明,谢谢。


Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("学术论文").StopRedraw()
    \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
    Dim nms() As String = {"年份","作者姓名","科别","职称","职称级别","论文题目","刊登杂志名称","发表期刊年月","登记时间","期刊类别","专业分类","著作情况"}
    \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = sheet(n,5).Text
        If DataTables("学术论文").Find("论文题目= \'" & bh & "\'") Is Nothing Then \'如果不存在同"题目"的学术论文
            Dim r As Row = Tables("学术论文").AddNew()
            For m As Integer = 0 To nms.Length - 1
                r(nms(m)) = Sheet(n,m).Value
            Next
        End If
    Next
    Tables("学术论文").ResumeRedraw()
End If