Witam,
Potrzebuję pomocy aby po kliknięciu na przycisk pobierało dane zaznaczonego wiersza w datagridview do odpowiednich pol (textboxów) i umożliwienie w nich zmiany zawartości, natomiast po wciśnięciu przycisku zapisz nastąpiło zapisanie zmienionych danych do odpowiedniego pola w datagridview oraz po wyjściu z formularza export danych do pliku excela z którego na wstępie pobiera te dane.

Chyba, że macie inne pomysły na rozwiązanie tego problemu.

Kod datagridview:

private void FormStart_Load(object sender, EventArgs e)
        { //wczytywanie danych z bazy excela

            groupBox1.Visible = false;
            object misValue = System.Reflection.Missing.Value;

            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
            //Microsoft.Office.Interop.Excel.Workbook workbook = app.Workbooks.Open(@"T:\kitek\Baza.xlsx",ReadOnly:true);
            Microsoft.Office.Interop.Excel.Workbook workbook = app.Workbooks.Open(@"C:\Users\Wojtek\Desktop\kitek09-02-2015\Baza.xlsx", ReadOnly: true);
            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets["Profil"];

            int rcount = worksheet.UsedRange.Rows.Count;
            int rCols = worksheet.UsedRange.Columns.Count;

            for (int j = 0; j < rCols; j++)
            {
                dataGridView1.Columns.Add(j.ToString(), (worksheet.Cells[1, j + 1] as Microsoft.Office.Interop.Excel.Range).Value.ToString());

            }

            for (int i = 1; i < rcount; i++)
            {
                int rowId = dataGridView1.Rows.Add();
                for (int j = 0; j < rCols; j++)
                {
                    dataGridView1.Rows[rowId].Cells[j].Value = (worksheet.Cells[i + 1, j + 1] as Microsoft.Office.Interop.Excel.Range).Value;

                }
            }
            workbook.Close(false,misValue,misValue);
            app.Quit();

            releaseObject(worksheet);
            releaseObject(workbook);
            releaseObject(app);

        }

        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Unable to release the Object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }

kod przycisku pobierz:

private void buttonPobierz_Click(object sender, EventArgs e) //pobierz dane do modyfikacji (problrm gdy jest puste pole)
        {
            int numer = dataGridView1.CurrentRow.Index;

            string zmienna1 = dataGridView1.Rows[numer].Cells[1].Value.ToString();
            textBoxPN.Text = (zmienna1);

            string zmienna2 = dataGridView1.Rows[numer].Cells[2].Value.ToString();
            textBoxProfil.Text = (zmienna2);

            string zmienna3 = dataGridView1.Rows[numer].Cells[3].Value.ToString();
            comboBoxTyp.Text = (zmienna3);

            string zmienna4 = dataGridView1.Rows[numer].Cells[4].Value.ToString();
            textBoxInfo.Text = (zmienna4);

            string zmienna5 = dataGridView1.Rows[numer].Cells[5].Value.ToString();
            textBoxWersja.Text = (zmienna5);