System.InvalidCastException:从字符串“”到“Date”类型的转换无效

时间:2013-10-15 20:55:59

标签: vb.net visual-studio date typeconverter

错误消息:System.InvalidCastException:从字符串“”到“Date”类型的转换无效。

 Sub Main()

        Dim OutApp As Object
        Dim OutMail As Object
        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim fecha As String
        Dim proc As System.Diagnostics.Process

        For Each proc In System.Diagnostics.Process.GetProcessesByName("EXCEL")
            If proc.MainWindowTitle.Trim.Length = 0 Then
                proc.Kill()
            End If
        Next

        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Open("\\file.xlsm")
        xlWorkSheet = xlWorkBook.Worksheets("Sheet")

        Try

            xlApp.Range("E41").Activate()
            xlApp.Range("E4").Select()

            xlWorkSheet.Range("E4").Select()
            xlWorkSheet.Range("E4").Activate()
            fecha = xlApp.ActiveCell.Value

            Do While xlApp.ActiveCell.Value <> ""

                'If (DateTime.Today - CDate(fecha)).Days = 180 Then
                 If (DateTime.Today - DateTime.ParseExact(fecha, "dd/mm/yyyy", CultureInfo.InvariantCulture)).Days = 180 Then

                   ' --more lines ---
                   '...
    End Sub

在此行中收到错误:

Do While xlApp.ActiveCell.Value <> ""

出于某种原因,似乎xlApp.ActiveCell.Value被视为日期而不是字符串。

另一件事是,如果今天和细胞值之间有6个月的差异,这是比较正确的方法吗?

If (DateTime.Today - DateTime.ParseExact(fecha, "dd/mm/yyyy", CultureInfo.InvariantCulture)).Days = 180

1 个答案:

答案 0 :(得分:2)

如果单元格中有日期值,Excel将自动格式化该单元格类型到目前为止。因此,当您将其与“”进行比较时,它将抛出异常。您应该检查单元格值的类型,或者在比较之前将单元格值转换为字符串。