以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 导入 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96777) |
||||
-- 作者:刘林 -- 发布时间:2017/2/27 20:22:00 -- 导入 Dim dwmc As String = user.group Dim oDocument2 As object = axWebBrowser2.Gettype().InvokeMember("Document", System.Reflection.BindingFlags.GetProperty, Nothing, axWebBrowser2, Nothing) Dim oApplication2 As object = axWebBrowser2.Gettype().InvokeMember("Application", System.Reflection.BindingFlags.GetProperty, Nothing, oDocument2, Nothing) oDocument2.save Dim Book As New XLS.Book(e.Form.Controls("label1").text) Dim Sheet As XLS.Sheet = Book.Sheets(0) Dim bj1 As Integer Dim xm1 As Integer Dim bsm1 As Integer Dim csrq As Integer For i As Integer = 0 To sheet.Cols.count -1 If sheet(0,i).value = "班级" bj1 =i End If If sheet(0,i).value = "学生姓名" xm1 = i End If If sheet(0,i).value = "学校标识码" bsm1 = i End If If sheet(0,i).value ="出生日期" csrq = i End If Next Dim p As WinForm.ProgressBar p = e.Form.Controls("ProgressBar1") p.Maximum = sheet.Rows.count -1 \'设置最大值 p.Minimum = 0 \'设置最小值 p.Value = 0 \'设置当前值 Tables("学生信息").StopRedraw() For n As Integer = 1 To Sheet.Rows.Count -1 p.Value = n \'设置当前 Dim bj As String = sheet(n,bj1).value.replace(" ","").replace(chr(9),"") Dim xm As String = sheet(n,xm1).value.replace(" ","").replace(chr(9),"") Dim bsm As String = sheet(n,bsm1).value.replace(" ","").replace(chr(9),"") Dim dr As DataRow = DataTables("学生信息").sqlFind("班级 = \'" & bj & "\'and 学校标识码 = \'" & bsm & "\' And 学生姓名 = \'" & xm & "\'") If dr Is Nothing Then \'如果不存在同考号的行 dr = DataTables("学生信息").AddNew() End If For m As Integer = 0 To sheet.Cols.count -1 If m = csrq dr(sheet(0,m).value) = Nothing End If dr(sheet(0,m).value) = Sheet(n,m).Value.replace(" ","").replace(chr(9),"") dr("状态") = "在读:原籍在读" End If Next Next e.Form.close Tables("学生信息").ResumeRedraw() For Each r As Row In Tables("学生信息").Rows For Each c As Col In Tables("学生信息").Cols If r.IsNull(c.Name) = False AndAlso c.IsString Then r(c.Name) = r(c.Name).replace(" ","") r(c.Name) = r(c.Name).replace(chr(9),"") End If Next Next DataTables("学生信息").DataCols("身份证件号").RaiseDataColChanged() DataTables("学生信息").save() Dim schoolName As String = user.group Dim cmd As New SQLCommand Dim dt As DataTable cmd.c cmd.CommandText = "SEL ECT DISTINCT 学校名称, 年级, 班级 From {学生信息} where 学校名称 = \'" & schoolName & "\'" dt = cmd.ExecuteReader() Dim trv As WinForm.TreeView = Forms("学生信息").Controls("TreeView1") trv.BuildTree(dt,"学校名称|年级|班级") 老师,请问上面代码在导放EXCL表格时,EXCL的第一列导进去是空的,没找到原因,请指点,
另外这个代码效率不高,请帮改进下,谢谢
|
||||
-- 作者:有点蓝 -- 发布时间:2017/2/27 21:00:00 -- 上传Execl测试 |
||||
-- 作者:刘林 -- 发布时间:2017/2/27 21:29:00 --
现在的问题是出生日期可能有,也有可能没有,我发现当表中没有出生日期列时,就会出现表中第一列的字段导进去是空的,我的想法是这个学籍表是从国网上导出来的,因为各校导出的列有所不同,且顺序也不一样,加之导出来的出生日期列是字符列(并不规范,有些是空的,转换也不行),我不想用户再去改,出生日期在表类型是日期列,且由身份证号生成,所以如果用户在国网上导出时没导出生日期列还好,如果导出了日期列该如何处理更好?
|
||||
-- 作者:有点蓝 -- 发布时间:2017/2/27 21:55:00 -- 定义的时候给个初始值 Dim csrq As Integer = -1
|
||||
-- 作者:刘林 -- 发布时间:2017/2/27 22:41:00 -- 对了, 老师,谢谢了,上面代码如何能更加优化,效率更高一点,感觉不是很快 |
||||
-- 作者:有点蓝 -- 发布时间:2017/2/27 22:57:00 -- 可以考虑使用vba导入:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=65686&skin=0 |