Excel ne ferme pas

0

La question

Mon problème est que j'ai un programme qui lit les données d'une feuille Excel .xlsb, mais quand le fichier Excel est ouvert, puis il me demande de l'enregistrer. Pourquoi?

 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

La meilleure réponse

1

[En plus de @JohnG]

Tout d'abord, vous devriez mettre l' app.Quit(); ligne de commande à côté de la boucle while et ensuite faire vos algorthyms, après que d'enregistrer votre classeur avec ce code;

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

et ensuite utiliser

app.Quit();

En outre; Une fois tous les processus zombie excel sera indiqué sur votre gestionnaire de tâches à résoudre que je tiens à recommander comme suit;

D'importation;

using System.Diagnostics;

Pour tuer les zombies excel utiliser cette fonction;

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();
    }
}

Et d'appeler à la fonction de suivi; (Interop excelle sans nom à cause de nous doit utiliser ("").

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

Thx à vous pour que KillSpecificExcelFileProcess(""); ce qui est excellent :)
Lukas Klossek

mais vous comprenez-moi bien , je ne veux pas de sauver,je ne veux pas lui demander de me sauver plus
Lukas Klossek

Ensuite, vous ne devriez pas utiliser wk.Close(); et app.Quit(); commandes.
Gürkan Özdem

Dans d'autres langues

Cette page est dans d'autres langues

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