以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 关于Import() 导入excel 特定字段无法读取 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=119369) |
||||
-- 作者:ckdxc -- 发布时间:2018/5/23 17:33:00 -- 关于Import() 导入excel 特定字段无法读取 我在使用import() 导入excel的时候 发现 系统无法 将 NO SYS_DATE MAKE_ID 正常读取
如果设定成 SYS_DATE NO MAKE_ID 放在excel 的第一列 就可以 读出来 但是如果是在 后面的行 SYS_DATE 就会 读成 0001-01-01 00:00:00 NO 读成 0 MAKE_ID 读成 0 求助一下 |
||||
-- 作者:有点甜 -- 发布时间:2018/5/23 17:55:00 -- 你的excel文件发上来测试一下。 |
||||
-- 作者:ckdxc -- 发布时间:2018/5/23 18:04:00 -- 加个QQ嘛 ok? 文件 不好吧 不方便 |
||||
-- 作者:有点甜 -- 发布时间:2018/5/23 18:33:00 -- 以下是引用ckdxc在2018/5/23 18:04:00的发言:
加个QQ嘛 ok? 文件 不好吧 不方便
删除敏感数据,然后发上来即可。只需要少量数据测试。 |
||||
-- 作者:ckdxc -- 发布时间:2018/5/23 19:02:00 -- ![]() ![]() Dim dlg As New OpenFileDialog \'--------定义一个新的OpenFileDialog dlg.Filter= "Excel文件|*.xls;*.xlsx" \'--------设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'--------如果用户单击了确定按钮 MessageBox.Show("你选择的是:" & dlg.FileName,"提示") \'--------提示用户选择的文件 Else Return End If Dim ip As New Importer \'--------定义输入 ip.SourcePath = dlg.FileName \'--------指定数据文件 ip.SourceTableName = "部门资料$" \'--------指定要导入的表 ip.NewTableName ="DTTMP" \'--------导入后的表名 ip.Format = "Excel" \'--------设置导入格式 ip.Import() \'--------EXCEL载入foxtable Dim Cols_count As Integer = Tables("DTTMP").Cols.count \'--------定义数据表列数 Dim Rows_count As Integer = Tables("DTTMP").Rows.count \'--------定义数据表行数 Dim dr As DataRow For i As Integer = 0 To Cols_count - 1 \'--------循环,写入到 TB_INFO dr = DataTables("NG_TABLE").AddNew() dr("Tbname") = "部门资料" dr("COLUMN_NAME") = Tables("DTTMP").Rows(1)(i) dr("COLUMN_CAPTION") = Tables("DTTMP").Rows(2)(i) dr("CHECK_FLAG") = False dr("IMPORT_FLAG") = True Next i Tables("DTTMP").Rows.Delete(0) \'--------删除第一行 Tables("DTTMP").Rows.Delete(0) \'--------删除第二行 Tables("DTTMP").Rows.Delete(0) \'--------删除第三行 DataTables("DTTMP").Save() Rows_count = Tables("DTTMP").Rows.count \'--------设置新的表行数 Dim dr1 As DataRow For i As Integer = 0 To Rows_count - 1 dr1 = DataTables("DEPT").AddNew()
dr1("NO") = Tables("DTTMP").Rows(i)("NO") dr1("NAME") = Tables("DTTMP").Rows(i)("NAME") dr1("DEP") = Tables("DTTMP").Rows(i)("DEP") dr1("UP") = Tables("DTTMP").Rows(i)("UP") dr1("USR") = Tables("DTTMP").Rows(i)("USR") dr1("SYS_DATE") = Tables("DTTMP").Rows(i)("SYS_DATE") dr1("MAKE_ID") = Tables("DTTMP").Rows(i)("MAKE_ID") dr1("NAME_PY") = Tables("DTTMP").Rows(i)("NAME_PY") Next i \'---------------CHECK数据 Dim file As New System.IO.StreamWriter("D:\\checklog.txt", True) Dim drs2 As List(of DataRow) = DataTables("DTTMP").SQLSelect("LEN(NAME) >= 15 or MAKE_ID not in (1,2,3) or LEN(NAME_PY) >= 15") For Each dr2 As DataRow In drs2 If(len(dr2("NAME"))>=15) Then file.WriteLine("ERROR" & " " & Datetime.now & " " & "NAME列" & dr2("F1") & "行") End If If(dr2("MAKE_ID")<>1 And dr2("MAKE_ID")<>2 And dr2("MAKE_ID")<>3) Then file.WriteLine("ERROR" & " " & Datetime.now & " " & "MAKE_ID列" & dr2("F1") & "行") End If If(len(dr2("NAME_PY"))>=15) Then file.WriteLine("ERROR" & " " & Datetime.now & " " & "NAME_PY列" & dr2("F1") & "行") End If Next file.Close() Dim Builder As New ADOXBuilder Builder.Open() With Builder .DeleteTable("DTTMP") End With Builder.Close() Syscmd.Project.Open(ProjectFile) \'--------重新加载项目
|
||||
-- 作者:有点甜 -- 发布时间:2018/5/23 21:10:00 -- 1、为什么要导入生成一个表,最后又删除?这不是多余吗?
2、如果要单纯导入数据,请参考
http://www.foxtable.com/webhelp/scr/0685.htm
http://www.foxtable.com/webhelp/scr/2334.htm
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=101056&skin=0
|