Foxtable(狐表)用户栏目专家坐堂 → 关于导入excel的代码(已解决)


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

主题:关于导入excel的代码(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
关于导入excel的代码(已解决)  发帖心情 Post By:2012/11/7 15:53:00 [只看该作者]

一段导入excel的代码,能够解决excel表的单元格为空时,导入出错的问题。现要求只导入“项目”列,值为“本月数”行的值,应该如何修改代码,请各位老师指教,谢谢!!

        For r As Integer = 1 To Sheet.Rows.Count - 1
            Dim Filter1 As String = ""
            For c As Integer = 0 To Sheet.Cols.Count - 1
                If c > 0 Then
                    Filter1 = Filter1 & " And "
                End If
                If sheet(r,c).Value <> "" AndAlso CurrentTable.DataTable.DataCols(sheet(0,c).Value).IsNumeric Then
                    Filter1 = Filter1 & sheet(0,c).Value & " = " & sheet(r,c).Value
                ElseIf sheet(r,c).Value = "" Then
                    Filter1 = Filter1 & sheet(0,c).Value & " is null "
                Else
                    Filter1 = Filter1 & sheet(0,c).Value & " = '" & sheet(r,c).Value & "'"
                End If
            Next
            If CurrentTable.DataTable.Find(Filter1) Is Nothing Then
                Dim dr As Row = CurrentTable.AddNew()
                For c As Integer = 0 To Sheet.Cols.Count - 1
                    dr(Sheet(0,c).Value) = Sheet(r,c).Value
                Next
            End If
        Next
[此贴子已经被作者于2012-11-8 9:15:29编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/7 17:33:00 [只看该作者]

你这个应该不用这么复杂的,看看

http://www.foxtable.com/help/topics/0683.htm

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/11/8 8:31:00 [只看该作者]

谢谢 lin_hailun老师的回复,因为数据要导入到已存在的表中,用Importer显然不行。用Merger,当excel表有空格时,会出现“从字符串“”到类型“Double”的转换无效”的错误提示,无法运行代码,而上面这段代码可以导入带空格的表数据,只是我需要导入部分行的数据,类似mg.Filter = "[项目] = '本月数'",代码应该如何修改,还请老师指教,谢谢!!

Merger方法的代码:

Dim mg As New Importer
mg.SourcePath = ProjectPath & "两项收入.xls"
mg.Format = "excel" '指定格式
mg.Filter = "[项目] = '本月数'"
mg.SourceTableName = "" & ny &"$" '指定要合并的表
mg.DataTableName = "两项收入" '指定接收数据的表
mg.Import() '开始合并

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/8 8:34:00 [只看该作者]

 加一个条件

mg.Filter = "[项目] = '本月数' And [某列] is not null"

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/11/8 8:41:00 [只看该作者]

谢谢 lin_hailun老师的回复,表中有五列数据,如果某行其中有一列数据为空格时,整行就不能导入,我的要求是要导入带空格的数据行,如何实现,还请老师指教,谢谢!!

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/8 8:58:00 [只看该作者]

那就去掉空值的判断:

 

mg.Filter = "[项目] = '本月数'"


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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/11/8 9:15:00 [只看该作者]

谢谢狐爸老师的回复。
如果有空值会显示 从字符串“”到类型“Double”的转换无效”的错误提示,无法运行代码。
用一楼的代码,再加上一条代码:DataTables("两项收入").DeleteFor("[项目] <> '本月数' "),将项目列不为“本月数”的行删除,达到目的。
谢谢各位老师的帮助。

 回到顶部