【问题标题】:System.InvalidCastException: Conversion from string "" to type 'Date' is not validSystem.InvalidCastException:从字符串“”到类型“日期”的转换无效
【发布时间】:2013-10-15 20:55:59
【问题描述】:

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

 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

【问题讨论】:

  • 试试 xlApp.ActiveCell.Text

标签: vb.net visual-studio date typeconverter


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 2014-05-03
    • 2021-05-05
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多