以文本方式查看主题

-  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”了,以上二个问题,请您解答,谢谢!!
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)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Next
End If
Tables("明细表").StopRedraw()
\'注意以下数组中列名称的顺序,必须和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 
Next
    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 


--  作者:有点甜
--  发布时间:2019/5/29 18:03:00
--  

 

具体实例发上来测试。

 

 


--  作者:0799snow
--  发布时间:2019/5/30 9:02:00
--  求助,导入后绑定的表为空
导入后绑定的表为空,导入的EXCEL表内为文本,对时间列和金额列不能转换成日期和双精度小数列
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试项目.table


--  作者:有点甜
--  发布时间: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”的转换无效。然后就也只导入一小部分数据就中止了