以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]条件导入问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40000)

--  作者:cqlpjks
--  发布时间:2013/9/6 11:01:00
--  [求助]条件导入问题
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:条件导入.rar

我要将“初2014级生地结业考试成绩.xls”中的“生物”、“地理”成绩合并到“(条件导入)初中期末成绩统计程序.Table ”中的成绩库中,要求是:“编号”=“编号”、“姓名”=“姓名”。合并代码(动态)如何写?请指教。谢谢!
--  作者:Bin
--  发布时间:2013/9/6 11:09:00
--  
参考这里http://www.foxtable.com/help/topics/2334.htm,循环Excel中所有行,然后利用Datatable("表名").Find(条件) http://www.foxtable.com/help/topics/0396.htm  找到对应的表中的行,为对应的列赋值即可.
--  作者:cqlpjks
--  发布时间:2013/9/6 15:23:00
--  

代码如下,还是没搞定。如何修改代码?请指教。谢谢!

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
dlg.Filter= "数据库文件|*.dbf;*.xls;*.xlsx|全部|*.*"
If dlg.ShowDialog = DialogResult.OK Then
    For Each fl As String In dlg.FileNames
        If fl.ToLower.EndsWith(".dbf") Then
            Dim wjm As String = FileSys.GetName(fl)
            Dim mg As New Merger
            mg.SourcePath = FileSys.GetParentPath(fl) \'指定数据文件所在目录
            mg.Format = "dbase" \'指定格式
            mg.SourceTableName =  wjm \'指定要合并的dbase文件,无需扩展名
            mg.DataTableName = "成绩库" \'指定接收数据的表
            mg.Filter = "[编号] = \'编号\'And [姓名] = \'姓名\'" \'指定合并条件
            mg.Fields = "生物,地理" \'指定要合并的字段(列),不同的字段用逗号隔开,如果不指定,则合并所有字段
            mg.Merge() \'开始合并
        Else If fl.ToLower.EndsWith(".xls") Then
            Dim Book As New xls.Book(fl)
            For Each Sheet As xls.Sheet In Book.Sheets \'引用新增加的工作表
                Dim mg As New Merger
                mg.SourcePath = fl \'指定数据文件所在目录
                mg.Format = "excel" \'指定格式
                mg.SourceTableName = sheet.Name & "$"
                mg.DataTableName = "成绩库" \'指定接收数据的表
                mg.Filter = "[编号] = \'编号\'And [姓名] = \'姓名\'" \'指定合并条件
                mg.Fields = "生物,地理" \'指定要合并的字段(列),不同的字段用逗号隔开,如果不指定,则合并所有字段.               
                mg.Merge() \'开始合并
            Next
        End If
    Next
End If


--  作者:狐狸爸爸
--  发布时间:2013/9/6 15:46:00
--  
Dim Book As New XLS.Book("C:\\test\\初2014级生地结业考试成绩.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,7).Text  \'获取编号
    Dim xm As String = sheet(n,8).Text  \'获取姓名
    Dim dr As DataRow =  DataTables("成绩库").Find("编号 = \'" & bh & "\' and 姓名 = \'" & xm & "\'")
    If dr IsNot Nothing
            dr("生物") = sheet(n,11).text
            dr("地理") = sheet(n,12).text
    End If
Next

--  作者:cqlpjks
--  发布时间:2013/9/6 16:34:00
--  
这是固定路径的合并代码。我是想用动态路径合并,并且数据来源表可能是“dbf” 或“xls” 格式。代码如何?请指教。谢谢!
--  作者:狐狸爸爸
--  发布时间:2013/9/6 16:36:00
--  

1、dbf没办法

2、固定路径改为活动路径,不是这个问题的重点,你完全可以自己改一下,不要太依赖别人


--  作者:cqlpjks
--  发布时间:2013/9/6 17:46:00
--  
“xls” 格式的动态路径合并已经搞定。谢谢!