以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助!导入EXCEL表数据全部为文本 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135588) |
||||
-- 作者:0799snow -- 发布时间:2019/5/29 17:50:00 -- 求助!导入EXCEL表数据全部为文本 这个是你刚才给我的代码,导入数据成功了,但是为文本格式,我需要对这个是"交易时间","金额","数量"定义为时间格式、和双精度小数格式。 此主题相关图片如下:qq图片20190529174315.png 我在窗口设计里点执行按钮后,绑定的明细表就为空了,但是我已经定义为“ture”了,以上二个问题,请您解答,谢谢!!
|
||||
-- 作者:有点甜 -- 发布时间:2019/5/29 18:03:00 --
具体实例发上来测试。
|
||||
-- 作者:0799snow -- 发布时间:2019/5/30 9:02:00 -- 求助,导入后绑定的表为空 导入后绑定的表为空,导入的EXCEL表内为文本,对时间列和金额列不能转换成日期和双精度小数列
|
||||
-- 作者:有点甜 -- 发布时间:2019/5/30 9:10:00 -- 1、你设置【明细表】的时候,把日期列、数值列等,改成对应的格式啊,不要都用字符格式啊。
2、删除这句代码 Tables("明细表").StopRedraw()
|
||||
-- 作者:0799snow -- 发布时间:2019/5/30 9:30:00 -- 求助,删除那行代码后,就只能导入一个表的数据了 删除那行代码后,就只能导入一个表的数据了,我可选多个表导入,但是只有第一个表的数据,后面我再选第二个表可以导入,之前是文本格式的对这个时间列重复的可以自动不导入,现在定义为日期列了就不能识别了,我需要对[卡号]和[交易时间]同时相同的行不重复导入,需要怎么修改 If DataTables("明细表").Find("交易时间 = \'" & sj & "\'") Is Nothing Then \'如果不存在同编号的订单 |
||||
-- 作者:有点甜 -- 发布时间:2019/5/30 9:51:00 -- Dim dlg As New OpenFileDialog dlg.MultiSelect = True If dlg.ShowDialog = DialogResult.OK Then OutPut.Show("你选择了" & dlg.FileNames.Length & "个文件, 分别是:") Tables("明细表").StopRedraw() For Each fl As String In dlg.FileNames Dim Book As New XLS.Book(fl) \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 Dim nms() As String ={"卡号","交易时间","金额","数量"} \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 Dim Sheet As XLS.Sheet = Book.Sheets(0) For n As Integer = 4 To Sheet.Rows.Count -1 Dim sj As String = sheet(n,2).Text If DataTables("明细表").Find("交易时间 = #" & sj & "#") Is Nothing Then \'如果不存在同编号的订单 Dim r As Row = Tables("明细表").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = Sheet(n,m).Value Next End If Next Next Tables("明细表").ResumeRedraw End If |
||||
-- 作者:0799snow -- 发布时间:2019/5/30 9:59:00 -- 求助,还是出错 提示错误:该字符串未被识别为有效的 DateTime。 然后还是只能导入小部分数据
|
||||
-- 作者:0799snow -- 发布时间:2019/5/30 10:00:00 -- 用这个代码后,明细表又为空了 用这个代码后,明细表又为空了 |
||||
-- 作者:有点甜 -- 发布时间:2019/5/30 10:41:00 -- Dim dlg As New OpenFileDialog dlg.MultiSelect = True If dlg.ShowDialog = DialogResult.OK Then OutPut.Show("你选择了" & dlg.FileNames.Length & "个文件, 分别是:") For Each fl As String In dlg.FileNames Dim Book As New XLS.Book(fl) \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 Dim nms() As String ={"卡号","交易时间","金额","数量"} \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 Dim Sheet As XLS.Sheet = Book.Sheets(0) For n As Integer = 4 To Sheet.Rows.Count -1 Dim sj As String = sheet(n,2).Text Dim d As Date Date.TryParse(sj, d) Dim fdr As DataRow If d = Nothing Then fdr = DataTables("明细表").Find("交易时间 is null") Else fdr = DataTables("明细表").Find("交易时间 = #" & d & "#") End If If fdr Is Nothing Then \'如果不存在同编号的订单 Dim r As Row = Tables("明细表").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = Sheet(n,m).Value Next End If Next Next End If |
||||
-- 作者:0799snow -- 发布时间:2019/5/30 11:19:00 -- 还是不行啊 需要导入的excel表格里定义为日期列数据,日期型的数据,报错了,从字符串“1880”到类型“Date”的转换无效。然后就也只导入一小部分数据就中止了 |