Excel no se cierra

0

Pregunta

Mi problema es que tengo un programa que lee los datos desde una hoja de Excel .xlsb, pero cuando el archivo de Excel está abierto, entonces me pide que le guarde. Por qué?

 async Task<bool> ReadVariable()
        {
            bool succeeded = false;
            while (!succeeded)
            {
                
                //open file excel using microsoft dll
                Excel.Application app = new Excel.Application();
                

                //open workbook
                Workbook wk = app.Workbooks.Open(excelpath, ReadOnly : true);
                //get first sheet
                Worksheet sh = wk.Worksheets[1];
                //get cell
                // Cells[unten/rechts] Example: [1,2] = B1 
                var day1tag = sh.Cells[27, 2].Value.ToString();
                exceltest1.Text = day1tag;
              
                var day1früh = sh.Cells[26, 2].Value.ToString();
                Day24oee24.Text = day1früh;


               
                app.DisplayAlerts = false;
                wk.Close(SaveChanges : false);
                app.Quit();

                await Task.Delay(15000);
                //await Task.Delay(108000000);
            }
            return succeeded;
        }
c# excel
2021-11-24 05:59:11
1

Mejor respuesta

1

[Además de la @JohnG]

En primer lugar, usted debe poner el app.Quit(); línea de comandos del lado del bucle while y, a continuación, hacer su algorthyms, después de que guardar el libro con el presente código;

xlWorkbook.SaveAs(saveFileDialog1.FileName + ".xlsx", Excel.XlFileFormat.xlWorkbookDefault, null, null, null, null, Excel.XlSaveAsAccessMode.xlExclusive, null, null, null, null, null);

y, a continuación, utilizar

app.Quit();

Además; Después de todo el proceso de zombie excel se muestra en el administrador de tareas de resolver que me gustaría recomendar como sigue;

De importación;

using System.Diagnostics;

Para matar zombis excel utilice esta función;

private void KillSpecificExcelFileProcess(string excelFileName)
{
    var processes = from p in Process.GetProcessesByName("EXCEL")
                    select p;

    foreach (var process in processes)
    {
        if (process.MainWindowTitle == excelFileName)
            process.Kill();
    }
}

Y llamar a la función como sigue; (Interoperabilidad sobresale son sin nombre debido a que debemos utilizar ("").

KillSpecificExcelFileProcess("");
2021-11-24 11:22:24

Thx para que KillSpecificExcelFileProcess(""); esto es genial :)
Lukas Klossek

pero usted me entienda mal , yo no lo quiero para guardar,no quiero que él me pida para guardar más
Lukas Klossek

Entonces usted no debería usar wk.Close(); y app.Quit(); los comandos.
Gürkan Özdem

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................