我有一个可供3个用户使用的测试床应用程序。
如果所有用户同时运行应用程序,那么将运行一个存储过程,并且所有三个用户都将拥有结果集,当前使用的ADO.NET Datatable大约为30,000条记录,然后应用程序需要将这些记录移动到每个记录的Excel模板中。
该模板是一个xlsm文件,其中包含一些在导入数据后需要运行的VBA。此模板保存在解决方案中。
我将尝试使用Excel-Interop将数据从DataTable移动到worksheet
有没有人有将数据表中的大量数据移动到Excel中的经验?
@slugster建议“从Excel设置一个数据源,然后使用脏读来运行查询”……是否可以在Excel中设置链接到非物化数据表的数据源?
通过xl interop循环遍历一个30000行乘10列的表会遇到问题吗?
发布于 2014-06-05 20:37:22
有没有将这些数据从数据表转移到Excel中的经验?
不是来自DataTable对象,而是使用Excel内置的导入数据能力的数据量,是的。
@slugster建议“从Excel设置一个数据源,然后使用脏读操作运行查询”……是否可以在Excel中设置链接到非物化数据表的数据源?
我也会建议你这样做。更进一步,我建议先创建一个存储过程,然后再调用它。使用存储过程时,您应该会看到更好的性能。该过程可以收集和准备数据,然后将其返回到Excel。此外,您还可以在过程中内置缓存机制。例如,如果您的数据每天只更改一次,那么您每天只在源表中重建一次数据,因此只有第一个请求数据的用户会受到初始性能的影响。此外,根据您在VBA中的Excel中执行的后处理类型,也可以在该过程中进行处理。如果您在该过程的顶部添加了SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED,或者对您希望允许脏读操作的表使用(NOLOCK)提示,则该过程还将有助于减少锁定问题的可能性。
这里有一篇关于在Excel中使用存储过程的好文章:http://codebyjoshua.blogspot.com/2012/01/get-data-from-sql-server-stored.html
通过xl互操作遍历一个30000行乘10列的表会遇到问题吗?
这取决于你对“问题”的定义。我可以看到可能的性能影响,但是,如果您在存储过程中处理尽可能多的内容,就应该没问题。在数据的世界里,这真的是微不足道。
https://stackoverflow.com/questions/14477263
复制相似问题