Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过线程从excel中提取数据_C#_Multithreading_Excel - Fatal编程技术网

C# 通过线程从excel中提取数据

C# 通过线程从excel中提取数据,c#,multithreading,excel,C#,Multithreading,Excel,我正在尝试使用OleDBAdapter和Fill()方法从多线程的excel中提取数据。每个线程接收一个新的OleDBAdapter以及要提取的startIndex和rowsCount 我的问题是,当每个线程启动时,它们都会被Fill()方法卡住。我尝试了不同的连接字符串和适配器,看看是否有帮助,但到目前为止运气不佳。似乎excel工作表的第一个连接将其锁定,直到其结束,因此我失去了线程处理的效率 到目前为止,我唯一没有尝试过的方法是用不同的名称复制文件,即在末尾添加threadIndex,然后

我正在尝试使用OleDBAdapter和Fill()方法从多线程的excel中提取数据。每个线程接收一个新的OleDBAdapter以及要提取的startIndex和rowsCount

我的问题是,当每个线程启动时,它们都会被Fill()方法卡住。我尝试了不同的连接字符串和适配器,看看是否有帮助,但到目前为止运气不佳。似乎excel工作表的第一个连接将其锁定,直到其结束,因此我失去了线程处理的效率


到目前为止,我唯一没有尝试过的方法是用不同的名称复制文件,即在末尾添加threadIndex,然后我可以有多个连接,因为数据源不同,但这似乎是我能做的最糟糕的事情

我怀疑适配器是以独占方式打开工作表的,这意味着在第一个工作表完成之前,其他任何内容都会被卡住。Excel不是数据库,因此对同一Excel文件的并行/多线程访问将不起作用,如果你让它以某种方式工作,它的行为将非常奇怪。。。这不是处理Excel文件的可靠方法。。。请描述您试图解决的问题。。。也许还有其他选择…excel文件是发送给我的股票,我需要从文件中提取相关数据。这些数据的呈现形式可能会有所不同,因此无法有效解析,因此我需要整张表。使用Excel对象读取Excel要比将其视为数据表慢得多。这些文件的大小可以从10kb到100mb不等,这使得整个文件的简单填充()非常缓慢(有时长达10分钟)。@BrainPicker有几个库(有些是免费的,有些是商业的)可以直接访问Excel文件,速度惊人。。。您的文件是XLS还是XLSX?@Yahia我使用相同的方法打开csv、XLS、XLSX和dbf文件。