微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从datagridview导入后关闭Excel进程

如何解决从datagridview导入后关闭Excel进程

如上所述,我不知道如何在将数据从我的 datagridview 导入到 xls 文件关闭 Excel 进程。问题是当我将数据保存到 xls 文件时,我仍然可以看到在后台运行的 Excel 进程。如果我打开同一个文件将数据重新导入到我的 datagridview 中,那么两个 Excel 进程现在处于活动状态。

知道如何解决这个问题吗?

这是我将数据保存为 xls 文件代码

private void ExportDataToExcelToolStripMenuItem_Click(object sender,EventArgs e)
    {
        SaveFileDialog SaveExcel = new SaveFileDialog()
        {
            Title = "Save Excel File",CheckPathExists = true,DefaultExt = "txt",Filter = "Excel files (*.xls)|*.xls",FilterIndex = 1,RestoreDirectory = true
        };

        if (SaveExcel.ShowDialog() == DialogResult.OK)
        {
            Excel.Application xlApp;        //Implementierung der Applikation,welche die Daten aus dem DataGridView in eine xls Datei schreiben kann
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);       //get_Item(1) ist essentiell,da festgelegt wird auf welchem Sheet das gespeichert wird. In diesem Falle auf Sheet 1
            int i = 0;
            int j = 0;

            for (i = 0; i <= DataGridViewCell.RowCount - 1; i++)
            {
                for (j = 0; j <= DataGridViewCell.ColumnCount - 1; j++)     //Die Zeilen und Spalten vom DataGridView werden gelesen
                {
                    DataGridViewCell cell = DataGridViewCell[j,i];
                    xlWorkSheet.Cells[i + 1,j + 1] = cell.Value;       //Daten werden den Spalten und Zeilen der xls Datei hinzugefügt

                }
            }

            xlWorkBook.SaveAs(SaveExcel.FileName,Excel.XlFileFormat.xlWorkbooknormal,misValue,Excel.XlSaveAsAccessMode.xlExclusive,misValue);     //Daten werden in einer xls Datei gespeichert
            xlWorkBook.Close(0);        //Excel Applikation wird wieder geschlossen und Prozess angehalten
            xlApp.Quit();       

            ReleaSEObject(xlWorkSheet);
            ReleaSEObject(xlWorkBook);
            ReleaSEObject(xlApp);
        }

解决方法

foreach (Process closeProcess in Process.GetProcesses())      
            {
                if (closeProcess.ProcessName.Equals("EXCEL"))
                {
                    closeProcess.Kill();
                    break;
                }
            }

这对我有用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。