Foxtable(狐表)用户栏目专家坐堂 → 如何用代码控制将一个excel的几列导入到本地表中


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

主题:如何用代码控制将一个excel的几列导入到本地表中

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/1 14:46:00 [只看该作者]

 For Each r As String In v1
        If Names.Contains(r)= False 
          
               下面的代码(包含for next下面的代码也不执行)都不执行该怎么控制啊?  
             用return 好像可以,但是总是跳一条执行OK的窗口。
        End If
 Next


……

[此贴子已经被作者于2023/12/1 14:46:51编辑过]

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


加好友 发短信
等级:超级版主 帖子:107861 积分:548662 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/1 15:10:00 [只看该作者]

麻烦完整代码!

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/1 15:12:00 [只看该作者]

Dim Names As New List(Of String)  '存excel表的所有列名组成的集合
Dim v1() As String = {"合同编号","应结转日期","实际结转日期"}  '待导入验证的内部数据表列名的数组

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "Excel2007" '指定格式
    Dim Book As New XLS.Book(dlg.FileName)
    
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 0 To Sheet.Cols.Count -1
        Names.add(Sheet(0,n).text)
    Next
    
    For Each r As String In v1
        If Names.Contains(r)= False   '   next 下面的代码也不执行
            
            Return messagebox.show("excel表中不存在列名为【" & r & "】得列")    

        End If
    Next
    
    mg.SourceTableName =Book.Sheets(0).name & "$"
    ' mg.SourceTableName = "Sheet1$"
    mg.DataTableName = "结转更新数据"
    mg.Merge()
End If
[此贴子已经被作者于2023/12/1 15:12:58编辑过]

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


加好友 发短信
等级:超级版主 帖子:107861 积分:548662 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/1 15:14:00 [只看该作者]

不执行,说明v1里所有列,execl里都有

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/1 15:17:00 [只看该作者]

我的意思,不知道怎么用代码控制, 让下面的所有的代码都不执行啊。

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


加好友 发短信
等级:超级版主 帖子:107861 积分:548662 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/1 15:25:00 [只看该作者]

这个意思?

    For Each r As String In v1
        If Names.Contains(r)= False   '   next 下面的代码也不执行
return 
        End If
    Next

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/1 15:31:00 [只看该作者]

是这个意思,但是return 为空,执行时提示编译错误,必须加一个返回值。
Return messagebox.show("excel表中不存在列名为【" & r & "】得列") 后,先跳出提示框,最后会再跳一个执行ok的框(这个提示框其实不需要的)。
图片点击可在新窗口打开查看此主题相关图片如下:1122.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:107861 积分:548662 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/1 15:34:00 [只看该作者]

您是在命令窗口测试的吧,命令窗口return就是这样的。放到真正的事件里执行就不需要返回值了

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2023/12/1 15:38:00 [只看该作者]

好的

 回到顶部
总数 19 上一页 1 2