以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于导入excel的代码(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=25363)

--  作者:yyzlxc
--  发布时间:2012/11/7 15:53:00
--  关于导入excel的代码(已解决)
一段导入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
--  发布时间:2012/11/7 17:33:00
--  
你这个应该不用这么复杂的,看看

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

--  作者:yyzlxc
--  发布时间: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
--  发布时间:2012/11/8 8:34:00
--  
 加一个条件

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

--  作者:yyzlxc
--  发布时间:2012/11/8 8:41:00
--  
谢谢 lin_hailun老师的回复,表中有五列数据,如果某行其中有一列数据为空格时,整行就不能导入,我的要求是要导入带空格的数据行,如何实现,还请老师指教,谢谢!!
--  作者:狐狸爸爸
--  发布时间:2012/11/8 8:58:00
--  

那就去掉空值的判断:

 

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


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