Считать файл Excel в оперативной памяти (массив байтов) с ADO.NET?

using (var cmd = new SqlCommand("SELECT * FROM Customers"))
{
    cmd.CommandTimeout = 60000;
    ...
}

является синтаксическим сахаром для

var cmd = new SqlCommand("SELECT * FROM Customers");
try
{
    cmd.CommandTimeout = 60000;
    ...
}
finally
{
    if (cmd != null)
        cmd.Dispose();
}

Поэтому, когда люди говорят вам, что «использование» является заменой для try / catch / наконец, они подразумевают, что вы должны использовать форму длинной руки но добавьте в свой блок catch:

var cmd = new SqlCommand("SELECT * FROM Customers");
try
{
    cmd.CommandTimeout = 60000;
    ...
}
catch (Exception ex)
{
    ...//your stuff here
}
finally
{
    if (cmd != null)
        cmd.Dispose();
}
5
задан Josh Stodola 18 June 2010 в 14:01
поделиться

3 ответа

Невозможно подключиться, если он существует только в памяти. OLE также исключен (хотя использование Office Automation для серверного приложения изначально плохо спроектировано).

Единственный способ, который я могу придумать, - это прочитать двоичные данные Excel самостоятельно - например, использовать SpreadSheetGear.Net с чем-то вроде :

SpreadsheetGear.Factory.GetWorkbookSet().Workbooks.OpenFromStream(*stream*);
5
ответ дан 14 December 2019 в 04:46
поделиться

Как сказал Рич Би в своем ответе, я не думаю, что возможно подключиться стандартным способом ado.net к файлу Excel, который просто зависает в памяти. Самым простым решением, вероятно, было бы на самом деле сохранить файл Excel на диск, подключиться к нему с помощью движка Jet со строкой подключения, а затем, когда вы закончите выполнение всех своих задач, избавиться от файла. Возможно, это не идеальный вариант с точки зрения производительности, но ему не хватает той определенной WTFiness, которая заставила бы вас выдергивать волосы.

2
ответ дан 14 December 2019 в 04:46
поделиться

Я не думаю, что это можно сделать с помощью простой строки подключения.

Если вам нужна помощь с файлом Excel на диске: http://connectionstrings.com/excel-2007

В общем: http://connectionstrings.com/

1
ответ дан 14 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: