Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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# 是否使用ADO.NET读取内存中的Excel文件(字节数组)?_C#_Excel_Ado.net_Connection String - Fatal编程技术网

C# 是否使用ADO.NET读取内存中的Excel文件(字节数组)?

C# 是否使用ADO.NET读取内存中的Excel文件(字节数组)?,c#,excel,ado.net,connection-string,C#,Excel,Ado.net,Connection String,我想使用ADO.net从Excel文件中提取一些数据。这个过程在互联网上有很好的记录。我的问题是,我的文件是由用户上传的,因此在内存中只能作为字节数组存在。出于安全和性能原因,我不希望将此文件写入磁盘 有没有一种方法可以构造连接到字节数组的连接字符串?或者将该阵列公开为实际存储在内存中的文件(我想是RAM磁盘)?我认为仅通过连接字符串不可能做到这一点 如果需要有关磁盘上Excel文件的帮助: 总的来说:就像Rich B在他的回答中所说的那样,我认为不可能用标准的ado.net方式连接到只是挂在内

我想使用ADO.net从Excel文件中提取一些数据。这个过程在互联网上有很好的记录。我的问题是,我的文件是由用户上传的,因此在内存中只能作为字节数组存在。出于安全和性能原因,我不希望将此文件写入磁盘


有没有一种方法可以构造连接到字节数组的连接字符串?或者将该阵列公开为实际存储在内存中的文件(我想是RAM磁盘)?

我认为仅通过连接字符串不可能做到这一点

如果需要有关磁盘上Excel文件的帮助:


总的来说:

就像Rich B在他的回答中所说的那样,我认为不可能用标准的ado.net方式连接到只是挂在内存中的excel文件。最简单的解决方法可能是将excel文件实际保存到磁盘,使用Jet引擎和连接字符串连接到该文件,然后在完成所有任务后,删除该文件。就性能而言,这可能不是理想的,但它缺乏一定的精细度,这会导致您拔出头发。

如果它只存在于内存中,则无法连接。OLE也被排除在外(尽管在服务器应用程序中使用Office Automation从一开始就是糟糕的设计)

我能想到的唯一方法是自己读取二进制Excel数据-例如,将SpreadSheetGear.Net与以下内容结合使用:

SpreadsheetGear.Factory.GetWorkbookSet().Workbooks.OpenFromStream(*stream*);

什么类型的.NET对象将您保存在内存Excel文件中?它是一个字节数组。我将更新这个问题。电子表格设备还有一个IWorkbooks.OpenFromMemory(byte[]数据)方法,因此您可以直接从字节数组以及David建议的流中读取。