以文本方式查看主题 - 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("[项目] <> \'本月数\' "),将项目列不为“本月数”的行删除,达到目的。 谢谢各位老师的帮助。
|