我使用Access 2007,SQL Server 2005和2008以及C#.net和VS20010。
我需要验证,然后导入已发布到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 :(得分:0)
您可以在C#4.0中使用dynamic
。
http://msdn.microsoft.com/en-us/library/dd264736.aspx
类型是静态类型,但是动态绕过类型的对象 静态类型检查。在大多数情况下,它的功能类似于它的类型 宾语。在编译时,键入动态的元素是 假设支持任何操作。因此,你不必是 关注对象是否从 COM API 中获取其值 来自HTML文档对象的动态语言,如IronPython 模型(DOM),来自反射,或来自程序中的其他位置。 但是,如果代码无效,则会在运行时捕获错误。
该链接显示了使用dynamic
和Excel的示例。