以文本方式查看主题 - 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事件中后测试无法完成合并导入,现将文件传上请具体
指导一下,谢谢。 |
||||
-- 作者:有点甜 -- 发布时间:2015/3/16 11:52:00 -- 测试了一下,下面这段代码没有问题
Dim dlg As new OpenFileDialog
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 |