以文本方式查看主题

-  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=70603)

--  作者:chnfo
--  发布时间:2015/6/24 23:47:00
--  [求助]日期数据从EXCEL表中导入的问题
希望从EXCEL表中导入数据,其中一列是日期,但EXCEL中显示的日期格式为2015/3/12这样的格式,而不是狐表中默认的3/12/2015

导入的代码为:
Dim dlg As new OpenFileDialog
dlg.Filter = "EXCEL文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.OK Then
    Tables("TempX").StopRedraw
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Dim nms() As String = { "RegDate","Title","V" }    ‘这里RegDate是日期列,另外两个分别是字符串和数字
    For i As Integer = 1 To Sheet.Rows.Count -1    
        Dim r As DataRow = DataTables("TempX").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(i,m).Value
        Next
    Next
    Tables("TempX").ResumeRedraw
end if 

但实际执行的时候,会报出这样的错误:
从字符串“2015/7/7”到类型“Double”的转换无效。----意思是不是说EXCEL中的数据会被认为是字符,而无法转换为日期?

如何解决之?


--  作者:大红袍
--  发布时间:2015/6/25 0:02:00
--  
 意思是你的excel内容是2015/7/7,但是你的列是double类型。
--  作者:大红袍
--  发布时间:2015/6/25 0:03:00
--  
Dim dlg As new OpenFileDialog
dlg.Filter = "EXCEL文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.OK Then
    Tables("TempX").StopRedraw
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Dim nms() As String = { "RegDate","Title","V" }    \'这里RegDate是日期列,另外两个分别是字符串和数字
    For i As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = DataTables("TempX").AddNew()
        For m As Integer = 0 To nms.Length - 1
            If DataTables("TempX").DataCols(nms(m)).IsDate Then
                r(nms(m)) = Cdate(Sheet(i,m).Value)
            ElseIf DataTables("TempX").DataCols(nms(m)).IsNumeric
                r(nms(m)) = val(Sheet(i,m).Value)
            Else
                r(nms(m)) = Sheet(i,m).Value
            End If
        Next
    Next
    Tables("TempX").ResumeRedraw
End If