Документ не сохранен / не удается получить доступ к электронной таблице при попытке записи в лист Excel - PullRequest
0 голосов
/ 01 мая 2019

Здравствуйте. Я пытаюсь открыть лист Excel, написать в него и сохранить.Все работает, пока я не позвоню xlWorkbook.SaveAs().Когда outputPath совпадает с файлом, который я открыл (inputPath), я получаю ошибку System.Runtime.InteropServices.COMException: 'Cannot access 'spreadsheet.xlsx'.'

Когда inputPath и outputPath отличаются, я получаю System.Runtime.InteropServices.COMException: 'Document not saved.'

Вот мой код.Я не уверен, что не так.Любая помощь приветствуется.

            object misValue = Type.Missing;

            Excel.Application xlApp = new Excel.Application {
                Visible = true
            };
            xlApp.DisplayAlerts = false;
            string outputPath = filePath.Text + fileName.Text;
            string inputPath = templateName.Text;

            Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(inputPath, misValue, false, misValue, misValue, misValue, true, misValue, misValue, true,
                misValue, misValue, misValue, misValue, misValue);

            Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];


            xlWorksheet.Cells[4, 3].Value = customer.Text;
            xlWorksheet.Cells[7, 3].Value = workOrder.Text;

            xlWorkbook.SaveAs(outputPath, Excel.XlFileFormat.xlWorkbookDefault, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlNoChange, 
                misValue, misValue, misValue, misValue, misValue);


            xlWorkbook.Close(true, outputPath, misValue);
            xlApp.Quit();

            Marshal.ReleaseComObject(xlWorkbook);
            Marshal.ReleaseComObject(xlWorksheet);
            Marshal.ReleaseComObject(xlApp);

            GC.Collect();
            GC.WaitForPendingFinalizers();
...