2012-02-16 93 views
0

我使用Access 2007,SQL Server 2005和2008,以及C#.net和VS20010。從Excel導入

我需要驗證,然後導入已發佈到SP文檔庫的Excel工作簿。我在A2k7中使用VBA編寫了程序,這樣我就可以實現它的工作,將所有想法集中在一起,等等。不久,我將開始將其轉換爲C#,以便可以從SQL Server代理按計劃運行它。我們會看到,身份驗證可能很有趣。

在我的Access VBA程序中,我使用一個簡單的語句來創建「變體」的多維數組。這使我可以在嘗試將其分配給本地變量之前測試每個單元格的正確類型。某些單元格必須是數字。其他人,我使用字符串,即使他們是數字。由於數據可能是手工輸入的,我幾乎可以看到單元格中的任何內容......我不僅僅導入它的原因之一,因爲大多數進口車輛(ACCESS,SSIS)都使用Excel對列的「類型」。

' 
' Get the range of used cells from the worksheet and stuff it into an array 
' 
xlApp.visible = False     'Don't let the workbook be shown 
Set xlWB = xlApp.Workbooks.Open(URL) 'Open the workbook 
Set xlSH = xlWB.Worksheets(1)   'Must be the first worksheet in the workbook 
HandleMessages 1, 0, 1, "Working on Workbook " & xlWB.NAME & ", Worksheet " & xlSH.NAME 
Set xlRA = xlSH.UsedRange    'xlRA is the range of cells in the first workbook that are "USED" 
strSheetArray = xlRA     'This sets an array of variants to the two dimensional range xlRA 

因此,去C#,我該如何處理缺少非類型化的「變體」?我如何繼續?任何人都做到了?

回答

0

您可以在C#4.0中使用dynamic

http://msdn.microsoft.com/en-us/library/dd264736.aspx

的類型是一個靜態類型,但類型的動態的一個目的繞過 靜態類型檢查。在大多數情況下,它的功能類似於 對象。在編譯時,輸入爲動態的元素是 ,假定它支持任何操作。因此,關於對象是否從COM API, 動態語言(如IronPython),從HTML文檔對象模型(DOM),反射或某處獲取其值, 不必是 其他在程序中。 但是,如果代碼無效,則會在運行時捕獲錯誤。

該鏈接顯示了在Excel中使用dynamic的示例。