从Excel导入

问题描述:

我使用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#,我该如何处理缺少非类型化的“变体”?我如何继续?任何人都做到了?

您可以在C#4.0中使用dynamic

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

的类型是一个静态类型,但类型的动态的一个目的绕过 静态类型检查。在大多数情况下,它的功能类似于 对象。在编译时,输入为动态的元素是 ,假定它支持任何操作。因此,关于对象是否从COM API, 动态语言(如IronPython),从HTML文档对象模型(DOM),反射或某处获取其值, 不必是 其他在程序中。 但是,如果代码无效,则会在运行时捕获错误。

该链接显示了在Excel中使用dynamic的示例。