Spreadsheetgear - открыть/сохранить файл

Я хочу обновить существующий файл Excel с помощью SpreadsheetGear.

Я загружаю файл Excel, используя:

 _activeWorkbook = Factory.GetWorkbook(@"./excel/test.xls");
 workbookView1.ActiveWorkbook = _activeWorkbook;

но когда я хочу сохранить его:

    private void menuSave_Click(object sender, EventArgs e)
    {
        workbookView1.GetLock();

        try
        { 
            _activeWorkbook.Save();
        }
        finally
        {
            workbookView1.ReleaseLock();
        }
    }

Я получаю следующую ошибку: System.IO.IOException: Процесс не может получить доступ к файлу "C:...\bin\Debug\excel\test.xls", так как он используется другим процессом.


person jcmag    schedule 05.11.2014    source источник


Ответы (1)


Как указывает исключение, какой-то другой процесс (или, возможно, ваше же приложение, если вы используете несколько потоков) заблокировал ваш файл, и поэтому SpreadsheetGear не может сохранить его обратно на диск. Виновником может быть любое количество других внешних процессов, например, антивирусное программное обеспечение, сканирующее ваш файл или открывающее его в самом Excel, когда вы пытаетесь его сохранить. Невозможно определить точную причину только по информации, предоставленной выше.

Что я могу вам сказать, так это то, что SpreadsheetGear не держит файловые потоки открытыми после чтения и записи файлов. Файловый поток и блокировка файла открыты только на время, необходимое для чтения/записи его содержимого, которое обычно очень короткое, если файл небольшой. Иными словами, @".excel/test.xls" должен быть доступен для записи сразу после выполнения строки Factory.GetWorkbook(...).

person Tim Andersen    schedule 05.11.2014