将Excel数据插入Access,但单元格不包含数据?

时间:2012-12-04 14:27:46

标签: vb.net excel ms-access insert epplus

我在Excel工作表中迭代某些行/单元格,而某些单元格是空白的。当我尝试执行插入时,如果单元格不包含任何数据,它会告诉我该特定参数没有默认值。在Access中,我将默认值设置为“= Null”但我仍然收到错误。我是否必须为每个参数执行如下所示的If语句以防止错误?如果可能的话,我想清理我的代码。

If worksheet1.GetValue(i, 14) Is Nothing Then
                            cmd.Parameters.Add("@Param1", OleDbType.Char).Value = DBNull.Value
                        Else
                            cmd.Parameters.Add("@Param1", OleDbType.Char).Value = worksheet1.GetValue(i, 14)
                        End If

1 个答案:

答案 0 :(得分:1)

根据我的经验(尽管是C#),是的,你做到了。 Interop(这是我假设你正在使用的,虽然我不认识GetValue()调用)通常会在你没有先检查时尝试从空单元格中获取数据时引发异常。我处理它的方法是将代码包装在一个方法中,每次都调用它(对不起,我的VB有点生锈):

Public Function GetCellContents(column As Integer, row As Integer) As String

    If worksheet1.GetValue(column, row) Is Nothing Then
        Return ""
    Else
        Return worksheet1.GetValue(column, row)
    End If

End Function

然后你可以这样做:

cmd.Parameters.Add("@Param1", OleDbType.Char).Value = GetCellContents(i, 14);