Открываю Excel документ, могу закрыть, только он не убиваеться из процесса задач - C#

Узнай цену своей работы

Формулировка задачи:

Работаю в Visual studeo 2005 в С#. Открываю Exel документ, могу закрыть, только он не убиваеться из процесса задач. Из процесса задач Exel вырубаеться только после закрытия программы. Может кто подскажет как его программно, правильно закрыть?

Решение задачи: «Открываю Excel документ, могу закрыть, только он не убиваеться из процесса задач»

textual
Листинг программы
     private void button1_Click(object sender, EventArgs e)
        {
            comboBox7.Items.Clear();            
            openFileDialog1.Filter = "Файл с выплатами | *.xls";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {                
                excelapp = new Excel.Application();
                excelapp.Visible = false;
                excelapp.Workbooks.Open(openFileDialog1.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                excelsheets = excelapp.ActiveWorkbook.Worksheets;
                excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
                excelcells = excelworksheet.get_Range("H3", Type.Missing);
                try
                {
                    if (excelcells.Value2.ToString() == "0531813")
                    {
                        excelcells = excelworksheet.get_Range("H4", Type.Missing);
                        data = Convert.ToString(excelcells.Value2);
                        string did;
                        try
                        {
                            sql = "SELECT Value FROM Data WHERE (Value = '" + iData(data) + "')";
                            cmd = new SqlCommand(sql, cs);
                            sdr = cmd.ExecuteReader();
                            cmd.Dispose();
                            sdr.Read();
                            did = sdr[0].ToString();
                            sdr.Close();
                        }
                        catch
                        {
                            sdr.Close();
                            sql = "INSERT INTO Data (Value) VALUES ('" + iData(data) + "')";
                            cmd = new SqlCommand(sql, cs);
                            cmd.ExecuteNonQuery();
                            cmd.Dispose();
                        }
                        sql = "SELECT id FROM Data WHERE (Value = '" + iData(data) + "')";
                        cmd = new SqlCommand(sql, cs);
                        sdr = cmd.ExecuteReader();
                        cmd.Dispose();
                        sdr.Read();
                        did = sdr[0].ToString();
                        sdr.Close();
 
                        try
                        {
                            sql = "SELECT id FROM Vipl WHERE (Data = '" + did + "')";
                            cmd = new SqlCommand(sql, cs);
                            sdr = cmd.ExecuteReader();
                            cmd.Dispose();
                            sdr.Read();
                            did = sdr[0].ToString();
                            sdr.Close();
                            System.Windows.Forms.MessageBox.Show("Ведомость кассовых выплат уже занесена в базу данных");
                        }
                        catch
                        {
                            sdr.Close();
                            while (inn != "X")
                            {
 
                                excelcells = excelworksheet.get_Range("C" + q, Type.Missing);
                                inn = Convert.ToString(excelcells.Value2);
                                excelcells = excelworksheet.get_Range("D" + q, Type.Missing);
                                kpp = Convert.ToString(excelcells.Value2);
                                excelcells = excelworksheet.get_Range("E" + q, Type.Missing);
                                kbk = Convert.ToString(excelcells.Value2);
                                excelcells = excelworksheet.get_Range("F" + q, Type.Missing);
                                money = Convert.ToString(excelcells.Value2);
                                excelcells = excelworksheet.get_Range("G" + q, Type.Missing);
                                prim = Convert.ToString(excelcells.Value2);
                                if (inn != "X")
                                {
                                    if (prim == "" && kpp == "")
                                    { sql = "INSERT INTO Vipl (Data, INN, KBK, Money) VALUES (" + did + ",'" + inn + "', '" + kbk + "', '" + iMoney(money) + "')"; }
                                    if (prim != "" && kpp == "")
                                    { sql = "INSERT INTO Vipl (Data, INN, KBK, Money, Primech) VALUES (" + did + ",'" + inn + "', '" + kbk + "', '" + iMoney(money) + "'," + prim + ")"; }
                                    if (prim != "" && kpp != "")
                                    { sql = "INSERT INTO Vipl (Data, INN, KBK, Money, Primech, kpp) VALUES (" + did + ",'" + inn + "', '" + kbk + "', '" + iMoney(money) + "'," + prim + ",'" + kpp + "')"; }
                                    if (prim == "" && kpp != "")
                                    { sql = "INSERT INTO Vipl (Data, INN, KBK, Money, kpp) VALUES (" + did + ",'" + inn + "', '" + kbk + "', '" + iMoney(money) + "','" + kpp + "')"; }
 
                                    cmd = new SqlCommand(sql, cs);
                                    cmd.ExecuteNonQuery();
                                    cmd.Dispose();
                                }
                                q++;
 
 
                            }
                            System.Windows.Forms.MessageBox.Show("Импорт значений в базу данных успешно занесен");
 
                        }
                        listBox1.Items.Clear();
                        sql = "SELECT Distinct Data.Value FROM Data INNER JOIN Vipl ON Data.id = Vipl.Data ORDER BY Data.Value";
                        cmd = new SqlCommand(sql, cs);
                        sdr = cmd.ExecuteReader();
                        cmd.Dispose();
                        while (sdr.Read())
                        {
                            listBox1.Items.Add(sdr[0].ToString());
                        }
 
                        sdr.Close();
                        label14.Text = "Количество " + listBox1.Items.Count.ToString();
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("Вносите только выплаты");
                    }
                } 
                catch
                {
                    System.Windows.Forms.MessageBox.Show("Вносите только выплаты");
                }
                excelapp.Workbooks.Close();
                excelapp.Quit();
            }              
            
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5
Похожие ответы