Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/7/2 13:12:00 [显示全部帖子]

这么久没人答复,我来试试。

随便用一个项目,在命令窗口用下面代码看看是你要的不 :

注意:你5楼的excel请先插入第一行: 图见11楼。

 

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls"
If dlg.ShowDialog = DialogResult.Ok Then 

    Dim ip As New Importer
    ip.SourcePath = dlg.FileName 
    ip.SourceTableName = "sheet1$" 
    ip.NewTableName ="考场与教室号对应表" 
    ip.Format = "Excel" 

    ip.Import()
End If

If DataTables("考场与教室号对应表").DataCols.Contains("学号") = False Then
    DataTables("考场与教室号对应表").DataCols.add("学号", Gettype(String))
End If

Dim dtb As New DataTableBuilder("学生考试通知单")
dtb.AddDef("班级号", Gettype(String), 32)
dtb.AddDef("班级名称", Gettype(String), 32)
dtb.AddDef("学号", Gettype(String), 32)
dtb.AddDef("姓名", Gettype(String), 32)
dtb.AddDef("考点名称", Gettype(String), 32)
dtb.AddDef("考试地址", Gettype(String), 32)
dtb.Build()

DataTables("学生考试通知单").DataRows.Clear()
With Tables("考场与教室号对应表")
For i As Integer = 0 To .count -1
    If .rows(i)("试卷号").contains("学号")
        Dim str As Integer = .rows(i)("试卷号").IndexOf("学号")
        Dim ed As Integer = .rows(i)("试卷号").IndexOf("姓名")
        .rows(i)("学号") = .rows(i)("试卷号").SubString(str+3,13)
    End If
    If i > 0
        If .Rows(i).Isnull("试卷号") = False And .Rows(i).Isnull("学号") And .Rows(i-1).Isnull("学号") = False
             .rows(i)("学号") = .rows(i-1)("学号") 
        End If
    End If 

        If .rows(i)("试卷号").contains("学号")
            Dim stb As Integer = .rows(i)("试卷号").IndexOf("班级")
            Dim str As Integer = .rows(i)("试卷号").IndexOf("学号")
            Dim ed As Integer = .rows(i)("试卷号").IndexOf("姓名")
            Dim edb As Integer = .rows(i)("考试日期").IndexOf("班")
            Dim dr As Row = Tables("学生考试通知单").addnew()
            dr("班级号") = .rows(i)("试卷号").substring(stb+3,str-stb-3).trim(" ")
            dr("班级名称") = .rows(i)("考试日期").SubString(0,edb+1)
            dr("学号") = .rows(i)("试卷号").substring(str+3,13)
            dr("姓名") = .rows(i)("试卷号").substring(ed+3)
        End If

        If .rows(i)("试卷号").contains("考点")
            Dim dr As Row = Tables("学生考试通知单").current
            dr("考点名称") = .rows(i)("试卷号").substring(5)
            dr("考试地址") = .rows(i)("考试日期").SubString(0)
        End If
    Next
End With
MainTable= Tables("学生考试通知单")
Tables("学生考试通知单").Autosizecols()

DataTables("考场与教室号对应表").DeleteFor("[试卷号] like '班级*' or [试卷号] is null or [试卷号] like '考点*' or [试卷号] like '*考试通知单' or [试卷号] like '试卷号' ")

If Relations.Contains("关联1") Then
    Relations.Delete("关联1")
End If

Relations.Add("关联1",DataTables("学生考试通知单").DataCols("学号"),DataTables("考场与教室号对应表").DataCols("学号"))

[此贴子已经被作者于2013-7-2 15:39:11编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/7/2 15:34:00 [显示全部帖子]

运行代码后,直接选择你5楼的Excel表就可以了。

 

注意,excel先插入第一行:


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-7-2 15:36:07编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/7/4 20:41:00 [显示全部帖子]

就用VLOOKUP做更简单,你把《考场号与教室对应表.xls》的sheet1 复制到《考试通知单.xls》的sheet2(新增),然后用下面的公式放到sheet1的新增列【 I 列】第一行中,再下拉······················ ok

=IF(A1="试卷号","教室",IF(D1<>0,IF(ISNA(VLOOKUP($D1,Sheet2!$A$2:$H$453,2,FALSE)),"",VLOOKUP($D1,Sheet2!$A$2:$H$453,2,FALSE)),""))

 

跨工作簿也可以的。。。。

[此贴子已经被作者于2013-7-4 20:42:07编辑过]

 回到顶部