Buscar este blog

martes, 10 de noviembre de 2015

Eliminar filas en excel desde c#

hace poco tuve que realizar un programa que abriera un archivo en excel y eliminara la primera fila y las ultimas, busque busque y no busque dicen los yucas, despues de mucho puede hacerlo, pongo el codigo por si a alguien le sirve
// primero selecciono el archivo en un openfiledialog
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            DialogResult result = openFileDialog1.ShowDialog();
            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 1;
            openFileDialog1.RestoreDirectory = true;
            if (result == DialogResult.OK)
            {
                string archivo = openFileDialog1.FileName;
                try
                {
//inicializa la instancia de la aplicacion                  
 Excel.Application nex = new Excel.Application();
                    nex.Visible = true;
                    rutaexcel.Text = archivo.ToString();
                    string workbookpath = archivo.ToString();
                    Excel.Workbook excelWorkbook = null;
                    try
                    {
                        // si se encontro abrir
                        excelWorkbook = nex.Workbooks.Open(workbookpath, 0,
                       false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
                        //obtienes la coleccion de hojas
                        Excel.Sheets excelhojas = excelWorkbook.Worksheets;
                        //obtienes la hoja a editar y el rngo a eliminar
                        string hoja_activa = "Balanza de Comprobación";
                        string rango = "A1";
                        Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelhojas.get_Item(hoja_activa);
                        Excel.Range rangok = (Excel.Range)excelWorksheet.get_Range(rango);
                        rangok.Select();
                        //ir al final de los datos
                        rangok.Application.Selection.End(Excel.XlDirection.xlDown).Select();
                      // bajar una celda del ultimo dato y borrar las siguientes 50 lineas
                      int f;
                        for(f=1; f<=50;f++)
                        {
                            Excel.Range R = excelWorkbook.Application.ActiveCell as Excel.Range;
                            Excel.Range activaterange = (Excel.Range)R.Offset[1, 0];
                            activaterange.EntireRow.Delete();
                            R.Select();
                        }
                    }
                    catch
                    {
                    }
                }
                catch (IOException)
                {
                }
            }
espero les sirva