【发布时间】:2021-03-05 12:07:43
【问题描述】:
如上所述,在将数据从我的 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, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, 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);
}
【问题讨论】:
-
差不多,但我找到了更好的解决方案
标签: c# excel datagridview process