是的。我正在使用几乎没有人喜欢的图书馆(COM/Interop)。我在练习一个分析Excel工作簿的程序,确定它的列并且用户拨打每个列的类型。一切都很完美,我可以检测每个列的类型错误(例如,如果数字列中有字符串),但我遇到问题的唯一类型是日期。我昨天在这里问了一个关于日期的问题(因为我在想什么),但我从这个问题知道日期只是数字....这是没有问题的,因为我可以使用Date.fromOADate。¿如何获得细胞的确切地址? (VB.NET/INTEROP.EXCEL)
那么,我面对的情况是,如果Excel列包含日期信息,例如,您在该日期列中添加数据字符串时,在程序中加载Excel书籍时,该数据字符串未标记它作为一个错误..。但把它当作一个空单元格(让我感到惊讶的事情)。
这是我写的标记每列的
Protected Friend Function obtenerErroresColumna(ByVal column As String, ByVal page As String, ByVal tipe As String) As Integer
If (Not String.IsNullOrEmpty(column)) Then
Dim cmd As String = "Select [" & column & "] from [" & page & "$]"
Dim errors As Integer = 0
Dim table As New DataTable
Try
Dim adapter As New OleDbDataAdapter(cmd, conexion)
adapter.Fill(table)
adapter.Dispose()
For Each itm In table.Rows
If (tipe.Equals("String")) Then
If (Not IsDBNull(itm(0))) Then
If (IsNumeric(itm(0))) Then
errors += 1
setValueError = itm(0)
End If
End If
ElseIf (tipe.Equals("Numeric")) Then
If (Not IsDBNull(itm(0))) Then
If (Not IsNumeric(itm(0))) Then
errors += 1
setValueError = itm(0)
End If
End If
ElseIf (tipe.Equals("Date")) Then
If (Not IsDBNull(itm(0))) Then
If (Not IsDate(itm(0))) Then
errors += 1
setValueError = itm(0)
End If
End If
End If
Next
table.Dispose()
Return errors
Catch ex As Exception
boxMessage("Error", ex.Message, My.Resources._error).ShowDialog()
Return errors
End Try
Else
Return 0
End If
End Function
OK了错误,因为我说的是前两种类型是运行良好的功能,问题是,当我开始比较日期数据类型。如果列是日期类型,我有这个想法:如果程序返回一个空单元格(如前所述,字符串数据将我作为空单元格返回),那么程序将获取单元格的地址以进行替换。我已经编写了替代方法......只有参数必须通过今天的日期,单元格的确切地址和列名称。
我想检查该循环的当前小区的ADRESS当变量 “ITM” 为Null(A4,B3,C50 ....等)
我使用互操作检测列,页数,以及使用范围。我在这里展示的函数仅用于单元格中的比较数据...我想在变量“itm”为Null时检查循环的当前单元格。 – TwoDent