任务是将每个工作表的多个文件(在同一个文件夹中)加载到同一个sql server表中,所有工作表都具有相同的格式,可以加载到同一个sql表中。
我正在使用visual studio数据工具2010.我知道如何在外部foreach循环容器中使用Foreach File Enumerator设置循环文件,以及如何在内部foreach循环容器中使用Foreach ADO.NET Schema Rowset Enumerator设置循环表。我的问题是如何通过动态传递文件路径来在这两个foreach循环容器之间建立连接。
我尝试配置excel ado访问连接管理器 - > property --->表达式---> [名称]到[fullfilepath],如@ [User :: fileFolder] + @ [User :: FileName],但不起作用....
任何人都可以帮忙吗?非常感谢!
答案 0 :(得分:0)
根据您的错误和说明,问题是您在表达式中设置[name]属性。您应该将[连接字符串]属性设置为[fullfilepath]而不是name属性。
关于您的编辑和评论。 有趣的是,我没有尝试过你想要做的事情,但在我看来,你使用错误的连接管理器/提供者类型,所以我做了一个快速的互联网搜索,看看我是否可以确认并找到这篇MS文章{ {3}}看起来几乎就是你想要的。
本文展示了使用Jet.OLEDB.4.0提供程序而不是您尝试使用的访问提供程序。我不肯定你是否可以使用ACE OLEDB并获得相同的结果,你不得不尝试。但是,无论哪种方式,连接字符串不仅仅是像平面文件或excel连接管理器那样的文件路径,而是需要它是一个合适的连接字符串。
对于Jet 4.0,访问驱动程序确实使用了文章建议:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @[User::fullfilepath] + ";Extended Properties=\"" + @[User::ExtProperties] + "\""
扩展属性中的反斜杠是包含双引号的转义序列。扩展属性是必需的,并且与您要连接的Excel版本相关。
E.g。 Excel 97到2003
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @[User::fullfilepath] + ";Extended Properties=Excel 8.0"
Excel 12.0 for 2007 +
对于ACE驱动程序,它只会改变提供者部分。
E.g。
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::fullfilepath] + ";Extended Properties=Excel 8.0"
答案 1 :(得分:-1)
感谢Matt的见解。我终于通过使用ADO.NET来实现工作表的内部循环。我之前缺少的是缺少一个额外的DFT excel连接管理器。