Как читать открытый файл excel на С#

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

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read);

Он дает IOException: The process cannot access the file 'myfile.xlsx' because it is being used by another process.

Надеюсь, вы понимаете, что я имею в виду. Я хочу сохранить файл excel открытым и пока файл открыт в Microsoft excel, я хочу прочитать его с С#. Я использую С# net framework 4.0

Ответ 1

Я думаю, вы все равно можете скопировать файл, а excel - открыть его, чтобы вы могли сделать копию файла, а затем открыть его. Просто убедитесь, что вы очистите себя, когда закончите с копией.

Ответ 2

Вам нужно открыть его с помощью FileShare.ReadWrite:

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

См. этот ответ.

Ответ 3

Вы можете использовать библиотеку Interop для использования уже открытого экземпляра Excel.

oExcel == (Excel.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")

Ответ 4

Чтобы обеспечить правильное открытие и закрытие файла, посмотрите на использование операторов С#

using (FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read)) 
{

}

Ответ 5

Вы можете попробовать File.Open с четвертым параметром - fileShare.

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read);

Вам также может потребоваться указать доступ на запись.

Ответ 6

Чтобы открыть один и тот же файл более одного раза в одно и то же время, его нужно открыть в режиме общего доступа.

Надеюсь, это поможет другим.