lunes, 9 de marzo de 2015

GUARDAR EXCEL por codigo c#

Dejo este PROGRAMA con la finalidad de que les sirva de ayuda si en caso trabajan un libro excel mediante programacion en Visual Studio.

Tal vez uno de los problemas FRECUENTES a la hora de programar mediante Csharp# es usando libros de Microsoft ( Excel, Word..etc) dejo una de las funciones en caso se quisiera realizar lo siguiente:


  1. Abrir un libro Excel cualquiera.
  2. Editar por código.
  3. Grabar edición.
  4. Cerrar conexión al libro seleccionado.

  Excel.Application excel = new Excel.ApplicationClass();
            Excel.Worksheet worksheet = null;
            Excel.Workbook workbook = null;


workbook = excel.Workbooks.Open("aqui ingresa ruta de tu .xls", 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
            Excel.Sheets excelSheets = workbook.Worksheets;
            string currentSheet = "CONSULTA";//<<-- Nombre de hoja Excel (no de archivo)
            worksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);

//edicion de la hoja excel con datos de GRILLA datagridview
            int rowIndex = 1;// INICIO DE POSICION DE FILA EN DATOS (recorrido)
            //---------------------ENCABEZADO----------------------------------------------------------
            //contador para las COLUMNAS
            int ColumnIndex = 2; //desde COLUMNA 2 ENCABEZADO
            //este ciclo es para saber cuantas columnas y que nombre de encabezado tiene nuestro grid e irlas agregando a nuestro objeto excel
            foreach (DataGridViewColumn col in dataGridView1.Columns)
            {
                //aumentamos la variable de uno en uno por cada columna en el grid
                ColumnIndex++;
                //se agrega una nueva celda con el nombre de la columna para tener el encabezado de nuestra tabla de registro:
                excel.Cells[rowIndex, ColumnIndex] = col.Name;
            }
            //--------------------------------------------------------------------------------------

            //-------------------DATOS DE EXCEL-----------------------------------------------------
            //recorremos el grid cumpliedo la condicion del foreach que por cada renglon que halla en el grid hara lo que esta dentro del ciclo
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                //aumentamos el numero del renglon
                //el numero de columnas lo regresamos a cero
                ColumnIndex = 2;
                //en este ciclo recorremos cada columna del renglon en el que estamos trabajando, el recorrido es simple es recorrer una matriz
                foreach (DataGridViewColumn col in dataGridView1.Columns)
                {
                    //aumentamos la columna
                    ColumnIndex++;
                    //agregando el valor contenido en determinada posicion del grid a nuestro objeto de excel.
                    excel.Cells[rowIndex+1, ColumnIndex] = row.Cells[col.Name].Value;
                    //excel.Cells[rowIndex + 1, ColumnIndex] = row.Cells["Numero Serie"].Value;
                    //recorre todas las columnas, renglon por renglon hasta terminar los renglones que tenga nuestro grid
                }
                rowIndex++;
            }
            //-----------------------------------------------------------------------------------
            excel.ActiveWorkbook.Save();// grabamos los datos recorridos mediante el DGV
            excel.ActiveWorkbook.Close("aqui ingresa ruta de tu .xls", "aqui ingresa ruta de tu .xls", null);
                //muestra en pantalla archivo de excel en DGV1
           // excel.Visible = true;// abre excel

Espero haya sido de su agrado. este tipo de Programa no etsa publicado en internet es por eso que lo comparto ya que me costó bastante encontrar la solucion al GUARDAR un archivo excel mediante PROGRAMACION.. No olviden compartirlo. GRACIAS...

Saludos..