2012-12-04 13 views
0

我正在遍歷Excel工作表中的某些行/單元格,並且其中一些單元格是空白的。當我嘗試插入時,如果一個單元格不包含數據,它會告訴我該特定參數沒有默認值。在Access中,我將默認值設置爲「= Null」,但仍然收到錯誤消息。爲了防止錯誤,我是否必須爲每個參數執行如下所示的If語句?如果可能,我想清理我的代碼。插入Excel數據到Access中,但單元格不包含數據?

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

以我的經驗(儘管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); 
+0

我正在使用EPPlus。因爲這是一個很好的主意,所以我會和你的建議一起去。非常感謝。 –

+0

@ user1066133啊哈,這就是爲什麼我不認識這個方法。我應該和EPPlus一起去,看起來相當不錯。很高興我能幫上忙。 –

相關問題