这么久没人答复,我来试试。
随便用一个项目,在命令窗口用下面代码看看是你要的不 :
注意:你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编辑过]