Foxtable(狐表)用户栏目专家坐堂 → 导入


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

主题:导入

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


加好友 发短信
等级:八尾狐 帖子:1942 积分:14943 威望:0 精华:0 注册:2016/4/28 9:58:00
导入  发帖心情 Post By: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的第一列导进去是空的,没找到原因,请指点, 另外这个代码效率不高,请帮改进下,谢谢

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/27 21:00:00 [只看该作者]

上传Execl测试

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


加好友 发短信
等级:八尾狐 帖子:1942 积分:14943 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/27 21:29:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:book1.xlsx


现在的问题是出生日期可能有,也有可能没有,我发现当表中没有出生日期列时,就会出现表中第一列的字段导进去是空的,我的想法是这个学籍表是从国网上导出来的,因为各校导出的列有所不同,且顺序也不一样,加之导出来的出生日期列是字符列(并不规范,有些是空的,转换也不行),我不想用户再去改,出生日期在表类型是日期列,且由身份证号生成,所以如果用户在国网上导出时没导出生日期列还好,如果导出了日期列该如何处理更好?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/27 21:55:00 [只看该作者]

定义的时候给个初始值

Dim csrq As Integer = -1

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1942 积分:14943 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/27 22:41:00 [只看该作者]

对了, 老师,谢谢了,上面代码如何能更加优化,效率更高一点,感觉不是很快


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/27 22:57:00 [只看该作者]


 回到顶部