Чтение потокового файла Excel, который не сохраняет содержимое на жесткий диск

59
8

я могу с комфортом читать excel файл через ADO.net и ExcelReader, но мне нужно прочитать файл Excel, в котором потоковая передача данных (каким-то другим приложением), и что данные не сохраняются на жестком диске

Проблема заключается в том, что filestream считывает содержимое файла, которое сохраняется на жестком диске :(, но здесь данные не сохраняются на жестком диске

Задача на первый взгляд

1) Некоторый exe по имени abc.exe (сторонний exe, я не контролирую его), записывая данные для excel с именем temp.xls через каждые 1 секунду, и этот файл excel открыт. Мы можем видеть эти данные в excel, но данные не сохраняются на жестком диске. abc.exe использует excel только для отображения данных, где мы можем просто видеть данные.

2) Теперь я пытаюсь прочитать данные из excel, так как эти данные не сохраняются на жестком диске, поэтому мы не можем читать с помощью класса потока файлов.

3) Я ищу технику, с помощью которой мы можем читать данные на С# из этого открытого файла excel непосредственно из его памяти, а не с жесткого диска.

Можно ли читать?

Пожалуйста, помогите мне

спросил(а) 2013-08-19T14:27:00+04:00 7 лет, 2 месяца назад
1
Решение
116

Если вы действительно хотите "живой доступ" к этим изменениям, вы можете это сделать:

    Напишите Excel-Addin (в основном, PlugIn для Excel) Он запускается внутри Excel и может получать события (например, изменение рабочей книги/ячейки, открытие/закрытие файла и т.д.)... этот AddIn затем передает всю информацию, необходимую через IPC (например, MMF), на ваш EXE

Другим вариантом может быть использование Interop для непосредственного общения с Excel - независимо от того, работает ли оно достаточно эффективно, зависит от нескольких аспектов (как другой EXE взаимодействует с Excel и т.д.).

ответил(а) 2013-08-21T00:29:00+04:00 7 лет, 2 месяца назад
41

Можно утверждать, что вы можете следовать:

открыть temp.xls с флагом readonly стандартным способом: Workbooks.Open Method Выполните свою оценку данных. Peraphs копирует содержимое в другую книгу. обнаруживать изменения на temp.xls с помощью класса FileSystemWatcher и повторно открывать его в качестве 1-й точки

Еще одна полезная вещь - обнаружить конец процесса из abc.exe. Возможно, это связано только с обнаружением отсутствия temp.xls или отсутствия exc.exe в таблице процессов (через ManagementEventWatcher Class).

Во всяком случае, в этот момент вы должны обнюхивать все проходящее через temp.xls.

ответил(а) 2013-08-21T00:24:00+04:00 7 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема