Ответ 1
Я думаю, вы все равно можете скопировать файл, а 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
Я думаю, вы все равно можете скопировать файл, а excel - открыть его, чтобы вы могли сделать копию файла, а затем открыть его. Просто убедитесь, что вы очистите себя, когда закончите с копией.
Вам нужно открыть его с помощью FileShare.ReadWrite:
FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
См. этот ответ.
Вы можете использовать библиотеку Interop для использования уже открытого экземпляра Excel.
oExcel == (Excel.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
Чтобы обеспечить правильное открытие и закрытие файла, посмотрите на использование операторов С#
using (FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read))
{
}
Вы можете попробовать File.Open с четвертым параметром - fileShare.
FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read);
Вам также может потребоваться указать доступ на запись.
Чтобы открыть один и тот же файл более одного раза в одно и то же время, его нужно открыть в режиме общего доступа.
Надеюсь, это поможет другим.