Foxtable(狐表)用户栏目专家坐堂 → 自动实现查找目录是否存在 不存在就创建 目录下有指定文件就自动导入 代码怎么修正呢?实现实现往指定目录里丢文件,代码自动导入并进行匹配字段值!


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

主题:自动实现查找目录是否存在 不存在就创建 目录下有指定文件就自动导入 代码怎么修正呢?实现实现往指定目录里丢文件,代码自动导入并进行匹配字段值!

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
自动实现查找目录是否存在 不存在就创建 目录下有指定文件就自动导入 代码怎么修正呢?实现实现往指定目录里丢文件,代码自动导入并进行匹配字段值!  发帖心情 Post By:2019/3/20 9:36:00 [只看该作者]

自动实现查找目录是否存在 不存在就创建 目录下有指定文件就自动导入  代码怎么修正呢?
有三段代码:
怎么将三段代码融合呢?实现往指定目录里丢文件,代码自动导入并进行匹配字段值!


代码:查找是否有目录,如果没有就新建,如果有就查找是否有指定的文件存在
If FileSys.DirectoryExists("d:\MyFolder") Then '如果目录C:\MyFolder存在
    MessageBox.Show("我存在哦")
    If FileSys.FileExists("d:\MyFolder\案件基本信息.xls") Then
        Messagebox.Show("文件已经存在!","提示")
    Else
        Messagebox.Show("文件不存在或已经被删除!","提示")
    End If
Else
    FileSys.CreateDirectory("d:\MyFolder")  '创建目录
    MessageBox.Show("我新建成功了")
End If


代码:实现导入指定文件表
Dim ip As New Importer
ip.SourcePath = "d:\MyFolder\案件基本信息.xls"" '指定数据文件
ip.SourceTableName = "案件基本信息$" '指定要导入的表
ip.NewTableName ="案件基本信息" '导入后的表名
ip.Format = "Excel" '指定导入格式
ip.Import()

代码:实现导入自动匹配对应的字段列值
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("案件基本信息")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    
    Dim c As Integer
    For i As Integer = 0 To sheet.Cols.Count -1
        If sheet(0,i).text = "部门受案号" Then
            c = i
            Exit For
        End If
    Next
    'msgbox("案号列=" & c)
    
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = t.DataTable.Find("部门受案号 = '" & sheet(n,c).text.trim() & "'")
        Dim Isnew As Boolean
        If r Is Nothing Then
            r = t.DataTable.AddNew()
            Isnew  = True
        End If
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If t.Cols.Contains(cname) Then
                If Isnew = False AndAlso cname = "是否关联" Then Continue For
                r(cname) = sheet(n, i).Text
            ElseIf cname = "移诉意见" Then
                r("移送意见") = sheet(n, i).Text
            ElseIf cname = "移诉案由" Then
                r("移送案由") = sheet(n, i).Text
                r("涉嫌案由") = sheet(n, i).Text
            ElseIf cname = "审结情况" Then
                r("审结处理结果") = sheet(n, i).Text
            ElseIf cname = "办结日期" Then
                r("审结日期") = sheet(n, i).Text
            End If
        Next
    Next
    t.ResumeRedraw()
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 9:44:00 [只看该作者]

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
   
    If FileSys.DirectoryExists("d:\MyFolder") Then '如果目录C:\MyFolder存在
        MessageBox.Show("我存在哦")
    Else
        FileSys.CreateDirectory("d:\MyFolder")  '创建目录
        MessageBox.Show("我新建成功了")
    End If
   
    Dim ip As New Importer
    ip.SourcePath = dlg.FileName
    ip.SourceTableName = "案件基本信息$" '指定要导入的表
    ip.NewTableName ="案件基本信息" '导入后的表名
    ip.Format = "Excel" '指定导入格式
    ip.Import()
   
    Dim t As Table = Tables("案件基本信息")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
   
    Dim c As Integer
    For i As Integer = 0 To sheet.Cols.Count -1
        If sheet(0,i).text = "部门受案号" Then
            c = i
            Exit For
        End If
    Next
    'msgbox("案号列=" & c)
   
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = t.DataTable.Find("部门受案号 = '" & sheet(n,c).text.trim() & "'")
        Dim Isnew As Boolean
        If r Is Nothing Then
            r = t.DataTable.AddNew()
            Isnew  = True
        End If
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If t.Cols.Contains(cname) Then
                If Isnew = False AndAlso cname = "是否关联" Then Continue For
                r(cname) = sheet(n, i).Text
            ElseIf cname = "移诉意见" Then
                r("移送意见") = sheet(n, i).Text
            ElseIf cname = "移诉案由" Then
                r("移送案由") = sheet(n, i).Text
                r("涉嫌案由") = sheet(n, i).Text
            ElseIf cname = "审结情况" Then
                r("审结处理结果") = sheet(n, i).Text
            ElseIf cname = "办结日期" Then
                r("审结日期") = sheet(n, i).Text
            End If
        Next
    Next
    t.ResumeRedraw()
End If

 


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim dlg As New OpenFileDialogdlg.F...  发帖心情 Post By:2019/3/20 11:28:00 [只看该作者]

有点甜老师 下面的代码可以实现d:\MyFolder\案件基本信息.xlsx这个目录下的这个文件自动导入了
如果这个文件下有多个不同名字的 甚至还有xls的文件  怎么实现便利当前目录下的所有Excel格式文件 全部自动导入呢?

If FileSys.DirectoryExists("d:\MyFolder") Then '如果目录C:\MyFolder存在
    MessageBox.Show("我存在哦")
    If FileSys.FileExists("d:\MyFolder\案件基本信息.xlsx") Then
        Messagebox.Show("文件已经存在!","提示")

            Dim t As Table = Tables("案件基本信息")
            t.StopRedraw()
            Dim Book As New XLS.Book("d:\MyFolder\案件基本信息.xlsx") 
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            
            Dim c As Integer
            For i As Integer = 0 To sheet.Cols.Count -1
                If sheet(0,i).text = "部门受案号" Then
                    c = i
                    Exit For
                End If
            Next
            'msgbox("案号列=" & c)
            
            For n As Integer = 1 To Sheet.Rows.Count -1
                Dim r As DataRow = t.DataTable.Find("部门受案号 = '" & sheet(n,c).text.trim() & "'")
                Dim Isnew As Boolean
                If r Is Nothing Then
                    r = t.DataTable.AddNew()
                    Isnew  = True
                End If
                For i As Integer = 0 To sheet.Cols.Count -1
                    Dim cname As String = sheet(0, i).text
                    If t.Cols.Contains(cname) Then
                        If Isnew = False AndAlso cname = "是否关联" Then Continue For
                        r(cname) = sheet(n, i).Text
                    ElseIf cname = "移诉意见" Then
                        r("移送意见") = sheet(n, i).Text
                    ElseIf cname = "移诉案由" Then
                        r("移送案由") = sheet(n, i).Text
                        r("涉嫌案由") = sheet(n, i).Text
                    ElseIf cname = "审结情况" Then
                        r("审结处理结果") = sheet(n, i).Text
                    ElseIf cname = "办结日期" Then
                        r("审结日期") = sheet(n, i).Text
                    End If
                Next
            Next
            t.ResumeRedraw()
        
    Else
        Messagebox.Show("文件不存在或已经被删除!","提示")
    End If
Else
    FileSys.CreateDirectory("d:\MyFolder")  '创建目录
    MessageBox.Show("我新建成功了")
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 12:33:00 [只看该作者]

If FileSys.DirectoryExists("d:\MyFolder") Then '如果目录C:\MyFolder存在
    MessageBox.Show("我存在哦")
    For Each file As String In FileSys.GetFiles("d:\MyFolder\")
        If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
           
           
            Dim t As Table = Tables("案件基本信息")
            t.StopRedraw()
            Dim Book As New XLS.Book(file)
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
           
            Dim c As Integer
            For i As Integer = 0 To sheet.Cols.Count -1
                If sheet(0,i).text = "部门受案号" Then
                    c = i
                    Exit For
                End If
            Next
            'msgbox("案号列=" & c)
           
            For n As Integer = 1 To Sheet.Rows.Count -1
                Dim r As DataRow = t.DataTable.Find("部门受案号 = '" & sheet(n,c).text.trim() & "'")
                Dim Isnew As Boolean
                If r Is Nothing Then
                    r = t.DataTable.AddNew()
                    Isnew  = True
                End If
                For i As Integer = 0 To sheet.Cols.Count -1
                    Dim cname As String = sheet(0, i).text
                    If t.Cols.Contains(cname) Then
                        If Isnew = False AndAlso cname = "是否关联" Then Continue For
                        r(cname) = sheet(n, i).Text
                    ElseIf cname = "移诉意见" Then
                        r("移送意见") = sheet(n, i).Text
                    ElseIf cname = "移诉案由" Then
                        r("移送案由") = sheet(n, i).Text
                        r("涉嫌案由") = sheet(n, i).Text
                    ElseIf cname = "审结情况" Then
                        r("审结处理结果") = sheet(n, i).Text
                    ElseIf cname = "办结日期" Then
                        r("审结日期") = sheet(n, i).Text
                    End If
                Next
            Next
            t.ResumeRedraw()
        End If
    Next   
Else
    FileSys.CreateDirectory("d:\MyFolder")  '创建目录
    MessageBox.Show("我新建成功了")
End If
[此贴子已经被作者于2019/3/20 12:52:44编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)If FileSys.DirectoryExists("d:\MyF...  发帖心情 Post By:2019/3/20 12:49:00 [只看该作者]

没有正确获取到d:\MyFolder\目录下的公诉和批捕两个excel文件名称,继续求解

If FileSys.DirectoryExists("d:\MyFolder") Then '如果目录C:\MyFolder存在
    output.Show("目录存在")
    For Each file As String In FileSys.GetDirectories("d:\MyFolder\")
        If file.EndsWith("*.xls") OrElse file.EndsWith("*.xlsx") Then
            Dim t As Table = Tables("案件基本信息")
            t.StopRedraw()
            Dim Book As New XLS.Book(file)
            output.Show("file")                                  没有正确获取到d:\MyFolder\目录下的公诉和批捕两个excel文件名称,继续求解
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            Dim c As Integer
            For i As Integer = 0 To sheet.Cols.Count -1
                If sheet(0,i).text = "部门受案号" Then
                    c = i
                    Exit For
                End If
            Next
            
            For n As Integer = 1 To Sheet.Rows.Count -1
                Dim r As DataRow = t.DataTable.Find("部门受案号 = '" & sheet(n,c).text.trim() & "'")
                Dim Isnew As Boolean
                If r Is Nothing Then
                    r = t.DataTable.AddNew()
                    Isnew  = True
                End If
                For i As Integer = 0 To sheet.Cols.Count -1
                    Dim cname As String = sheet(0, i).text
                    If t.Cols.Contains(cname) Then
                        If Isnew = False AndAlso cname = "是否关联" Then Continue For
                        r(cname) = sheet(n, i).Text
                    ElseIf cname = "移诉意见" Then
                        r("移送意见") = sheet(n, i).Text
                    ElseIf cname = "移诉案由" Then
                        r("移送案由") = sheet(n, i).Text
                        r("涉嫌案由") = sheet(n, i).Text
                    ElseIf cname = "审结情况" Then
                        r("审结处理结果") = sheet(n, i).Text
                    ElseIf cname = "办结日期" Then
                        r("审结日期") = sheet(n, i).Text
                    End If
                Next
            Next
            t.ResumeRedraw()
            If FileSys.FileExists(file) Then '如果指定的文件存在
                FileSys.DeleteFile(file,2,2) '则彻底删除之
            End If
        End If
    Next
Else
    FileSys.CreateDirectory("d:\MyFolder")  '创建目录
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 12:52:00 [只看该作者]

output.Show(file)       

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 12:53:00 [只看该作者]

If FileSys.DirectoryExists("d:\MyFolder") Then '如果目录C:\MyFolder存在
    MessageBox.Show("我存在哦")
    For Each file As String In FileSys.GetFiles("d:\MyFolder\")

msgbox(file)
        If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
           
           
            Dim t As Table = Tables("案件基本信息")
            t.StopRedraw()
            Dim Book As New XLS.Book(file)
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
           
            Dim c As Integer
            For i As Integer = 0 To sheet.Cols.Count -1
                If sheet(0,i).text = "部门受案号" Then
                    c = i
                    Exit For
                End If
            Next
            'msgbox("案号列=" & c)
           
            For n As Integer = 1 To Sheet.Rows.Count -1
                Dim r As DataRow = t.DataTable.Find("部门受案号 = '" & sheet(n,c).text.trim() & "'")
                Dim Isnew As Boolean
                If r Is Nothing Then
                    r = t.DataTable.AddNew()
                    Isnew  = True
                End If
                For i As Integer = 0 To sheet.Cols.Count -1
                    Dim cname As String = sheet(0, i).text
                    If t.Cols.Contains(cname) Then
                        If Isnew = False AndAlso cname = "是否关联" Then Continue For
                        r(cname) = sheet(n, i).Text
                    ElseIf cname = "移诉意见" Then
                        r("移送意见") = sheet(n, i).Text
                    ElseIf cname = "移诉案由" Then
                        r("移送案由") = sheet(n, i).Text
                        r("涉嫌案由") = sheet(n, i).Text
                    ElseIf cname = "审结情况" Then
                        r("审结处理结果") = sheet(n, i).Text
                    ElseIf cname = "办结日期" Then
                        r("审结日期") = sheet(n, i).Text
                    End If
                Next
            Next
            t.ResumeRedraw()
        End If
    Next   
Else
    FileSys.CreateDirectory("d:\MyFolder")  '创建目录
    MessageBox.Show("我新建成功了")
End If


 回到顶部