C# como guardar los cambios realizados en un datagridview con conexion a excel

  • 0 Respuestas
  • 1208 Vistas
*

Macias

  • *
  • 1
  • +0/-0
    • Ver Perfil
Hola buen dia, me podrian ayudar a saber como guardar los cambio hechos en un datagridview que esta enlazado a una hoja de un archivo excel

Acontinuacion mi codigo fuente:

//** en este metodo el usuario elije un archivo excel que tenga en su pc el que quiera**\\

 private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox2.Text = "";
            txtArchivo.Text = "";
            comboBox1.DataSource = null;
            comboBox1.Items.Clear();
            comboBox1.Text = "";
            dataGridView1.DataSource = null;

            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Archivos de Excel (*.xls;*.xlsx)|*.xls;*.xlsx";

            dialog.Title = "Seleccione el archivo de Excel";

            dialog.FileName = string.Empty;

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                txtArchivo.Text = dialog.FileName;
                LLenarGrid(txtArchivo.Text);
            }

        }

//** con este metodo se llena un comboBox con el nombre de las hojas que contenga el archivo que desea abrir el usuario, para que a este le sea mas facil elegir la hoja que quiera abrir**\\

        public void LLenarGrid(string archivo)
        {
            Excel.Application xlApp = new Excel.Application();
            Workbook wb;
            string Filename;
            wb = xlApp.Workbooks.Open(Filename = @archivo);

            foreach (Worksheet sheet in wb.Worksheets)
            {
                DialogResult a = new DialogResult();
                a = MessageBox.Show(sheet.Name, "Se a abierto la hoja", MessageBoxButtons.OK);
                if (a == DialogResult.OK)
                {
                    comboBox1.Items.Add(sheet.Name);
                }
            }
            wb.Close();
            wb = null;

            xlApp.Quit();
            xlApp = null;
        }

//** en este otro metodo se abre la hoja que haya elegido el usuario y se muestra en un datagridview**\\

        private void button3_Click(object sender, EventArgs e)
        {
            string archivo;
            archivo = txtArchivo.Text;
            DataSet dataSet = null;
            OleDbDataAdapter dataAdapter = null;
            string hoja;
            hoja = comboBox1.Text;
            OleDbConnection conexion = null;
            string consultaHojaExcel = "Select * from [" + hoja + "$]";
            string cadenaConexionArchivoExcel = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + archivo + "';Extended Properties=Excel 12.0;";
            try
            {
                conexion = new OleDbConnection(cadenaConexionArchivoExcel);
                conexion.Open();
                dataAdapter = new OleDbDataAdapter(consultaHojaExcel, conexion);
                dataSet = new DataSet();
                dataAdapter.Fill(dataSet, hoja);
                dataGridView1.DataSource = dataSet.Tables[0];
                dataGridView1.AllowUserToAddRows = false;

            }

            catch (Exception ex)
            {

                MessageBox.Show("Error, Verificar el archivo o el nombre de la hoja", ex.Message);
            }
        }


//** en este metodo es un buscador o filtrador para que el usuario elija los datos que desea modificar**\\

        public string Valor;

        private void button2_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow fila in dataGridView1.Rows)
            {
                String strFila = fila.Index.ToString();

                string buscar = textBox1.Text;

                Valor = Convert.ToString(fila.Cells[buscar].Value);


                dataGridView1.CurrentCell = null;

                if (Valor == textBox2.Text)
                {

                    dataGridView1.Rows[Convert.ToInt32(strFila)].Visible = true;

                }
                else
                {
                    dataGridView1.Rows[Convert.ToInt32(strFila)].Visible = false;
                }
            }

        }
//** por ultimo en este se hacen las modificaciones, que por lo regular son solo monetarias, me gustaria poder guardar esos datos en la misma hoja osea solo actualizarlos**\\

        public void button4_Click(object sender, EventArgs e)
        {

            foreach (DataGridViewRow fila in dataGridView1.Rows)
            {
                String strFila = fila.Index.ToString();

                string buscar = textBox1.Text;

                Valor = Convert.ToString(fila.Cells[buscar].Value);


                dataGridView1.CurrentCell = null;

                if (dataGridView1.Rows[Convert.ToInt32(strFila)].Visible == true)
                {
                    int sueldo = int.Parse(Valor);
                    int suma = int.Parse(textBox3.Text), nuevosueldo;
                    nuevosueldo = sueldo + suma;
                    fila.Cells[buscar].Value = Convert.ToString(nuevosueldo);
                }
            }
        }

//**aqui es donde me gustaria meter el codigo para guardar**\\

        private void button6_Click(object sender, EventArgs e)
        {

        }


Gracias de antemano y espero me puedan ayudar