Foros del Web » Programación para mayores de 30 ;) » .NET »

Insertar datos en un excel ????

Estas en el tema de Insertar datos en un excel ???? en el foro de .NET en Foros del Web. Pregunto algo que pense me seria facil encontrar por la web , o en foros , pero la verdad que debo tener un dia muy ...
  #1 (permalink)  
Antiguo 18/01/2011, 14:33
 
Fecha de Ingreso: diciembre-2010
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
Insertar datos en un excel ????

Pregunto algo que pense me seria facil encontrar por la web , o en foros , pero la verdad que debo tener un dia muy espesito porque , o no busco bien o no me entero
Al lio: quiero abrir un archivo excel ya existente, buscar un valor en una celda y copiar en la celda de al lado una fecha que hay en un textbox .... hast ahora, abro el excel sin problemas ... pero me he bloqueado ahi
Os dejo el codigo que tengo en el click de un boton .... alguien me ayuda??? aunque sea para decirme como insertar un valor en la celda (x,y) de la hoja2 del libro .....
Dim objExcel As Microsoft.Office.Interop.Excel.Application

Código HTML:
 Dim objExcel As Microsoft.Office.Interop.Excel.Application


        'Una variable de tipo Libro de Excel   
        Dim xLibro As Microsoft.Office.Interop.Excel.Workbook
        Dim Col As Integer, Fila As Integer

        'creamos un nuevo objeto excel   
        objExcel = New Microsoft.Office.Interop.Excel.Application

        'Usamos el método open para abrir el archivo que está _   
        ' en el directorio del programa llamado archivo.xls   
        xLibro = objExcel.Workbooks.Open(System.AppDomain.CurrentDomain.BaseDirectory + "\archivoexcel.xls")
        
        'Hacemos el Excel Visible   
        objExcel.Visible = True
Gracias , ydisculpen la molestia ...
  #2 (permalink)  
Antiguo 18/01/2011, 14:57
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Insertar datos en un excel ????

Para recorrer un excel que ya tienes abierto lo haces en el worksheet,

por ejemplo

For x As Integer = 1 To worksheet.UsedRange.Rows.Count
...
.
Next

---

Para validar algun valor podrias hacerlo asi

If worksheet.Cells(x, 2).Value2.ToString.Contains("Total") Then ...

---

Para asignarle un valor a una celda en especifico

worksheet.Cells(x, col).Value2 = "Nuevo Texto"

a este campo le puedes asignar cualquier tipo de dato.

---

Tambien puedes asignar formulas o cualquier cosa que excel te permita, como

worksheet.Cells(x, col).Value2 = "=IF(ISERROR(" & Formx & "),0," & Formx & ")"

---

Puedes aplicarle formatos a tu hoja de excel para que tenga una mejor apariencia

Código:
Dim vFormato As Microsoft.Office.Interop.Excel.XlRangeAutoFormat
vFormato = XlRangeAutoFormat.xlRangeAutoFormatClassic1
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(worksheet.UsedRange.Rows.Count, worksheet.UsedRange.Columns.Count)).AutoFormat(vFormato)
.
...
...
en este caso se le aplico el formado o diseño "xlRangeAutoFormatClassic1"

---

Darle formato solo al header

Código:
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(1, worksheet.UsedRange.Columns.Count)).Font.Bold = True
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(1, worksheet.UsedRange.Columns.Count)).Font.Size = 12
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(1, worksheet.UsedRange.Columns.Count)).Font.Italic = True
.
...
...
---

Si queremos aplicarle formato a la linea de subtotales, pero no sabemos en cual linea estan, recorremos la hoja y aplicamos el formato a la linea correspondiente

Código:
            For x As Integer = 1 To worksheet.UsedRange.Rows.Count
                'bold a los subtotales
                If worksheet.Cells(x, 2).Value2.ToString.Contains("Total") Or _
                         worksheet.Cells(x, 2).Value2.ToString.Contains("Grand") Then
                    worksheet.Range(worksheet.Cells(x, 1), worksheet.Cells(x, worksheet.UsedRange.Columns.Count)).Font.Bold = True
                End If
            Next
.
...
...
----

creo que aqui te deje bastante ejemplos, espero que te sirvan
__________________
roy rojas
Programación en Español: DotNetcr.com
  #3 (permalink)  
Antiguo 18/01/2011, 15:02
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Insertar datos en un excel ????

aca te dejo un ejemplo de como escribir en un excel usando interop

Código:
                Excel.Application excelApp = new Excel.ApplicationClass();
                Excel._Worksheet worksheet = null;
                Excel._Workbook workbook = null;
                SaveFileDialog dlgs = new SaveFileDialog();
                string filename = "";
                try
                {
                    if (excelApp != null)
                    {
                            FileInfo sPathApp = new FileInfo(dlg.FileName);
                            string sPathAppFile = Convert.ToString(sPathApp.Name);
                        workbook = (Excel._Workbook)excelApp.Workbooks.Open(dlg.FileName, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
                        workbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);//crea nueva hoja
                        worksheet = (Excel._Worksheet)workbook.ActiveSheet; // activa la Hoja
                        worksheet.Name = "Hojatest";// cambia nombre a hoja
                        int totalSheets = workbook.Sheets.Count;
                        worksheet.Move(Type.Missing, workbook.Worksheets[totalSheets]);

                        worksheet.Cells[4, 1] = "texto";
                        worksheet.Cells[4, 2] = "De";
                        worksheet.Cells[4, 3] = "Pruebas";
                        worksheet.Cells[4, 4] = "-------";
		     }
		}

                    workbook.Close(null, null, null);
                    excelApp.Workbooks.Close();
                    excelApp.Quit();
                    MessageBox.Show("Exportacion a Excel Finalizada");
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
                    

                    
                    worksheet = null;
                    workbook = null;
                    excelApp = null;

                    GC.Collect();
en todo caso, debes tomar en cuenta que este metodo, a veces tiene el inconveniente que no cierra los procesos excel en la memporia, por lo qu ea la larga, puede provocar mas problemas.
existen otras herramientas como aspose que facilitan aun mas este procedimiento.

saludos
plch
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...
  #4 (permalink)  
Antiguo 18/01/2011, 15:35
 
Fecha de Ingreso: diciembre-2010
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Insertar datos en un excel ????

Gracias por la rapida respuesta .... pero no logro funcionarlo . A ver si me pueden ayudar con el codigo .
Es un form, con un boton y un textbox. El archivo excel se llama archivo1

Al presionar el boton quiero que me inserte en la celda 1,1 de la hoja 1 el texto del textbox .... tengo la referencia añadida etc.. cual seria el codigo .... no se que me pasa pero no me rula
  #5 (permalink)  
Antiguo 18/01/2011, 16:06
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Insertar datos en un excel ????

Código:
       Dim objExcel As Microsoft.Office.Interop.Excel.Application


        'Una variable de tipo Libro de Excel   
        Dim xLibro As Microsoft.Office.Interop.Excel.Workbook
        Dim Col As Integer, Fila As Integer

        'creamos un nuevo objeto excel   
        objExcel = New Microsoft.Office.Interop.Excel.Application

        'Usamos el método open para abrir el archivo que está _   
        ' en el directorio del programa llamado archivo.xls   
        xLibro = objExcel.Workbooks.Open(System.AppDomain.CurrentDomain.BaseDirectory + "\archivoexcel.xls")
        
============ mi codigo ===========

           Dim xlBooks As Workbooks
           xlBooks = objExcel.Workbooks

            Dim xlBook As _Workbook
            xlBook = xlBooks.Add(XlWBATemplate.xlWBATWorksheet)

            Dim xlSheet As Sheets
            xlSheet = xlBook.Worksheets

            Dim worksheet As _Worksheet
            worksheet = CType(xlSheet.Item(1), _Worksheet)
            If worksheet Is Nothing Then
                'MsgBox("Error: hoja de trabajo es nula")
                Environment.ExitCode = 0
                Return "Error: hoja de trabajo es nula"
                Exit Function
            End If

            '===Escribe en la celda 1,1
            worksheet.Cells(1, 1).Value2 = "Mi Nuevo Valor"

========fin mi codigo==========

        'Hacemos el Excel Visible   
        objExcel.Visible = True

======================
este codigo lo puse sin compilar ni nada, a puro texto, asi que si te da error en algun punto deberia ser facil arreglarlo, pero asi como esta deberia funcionar.
__________________
roy rojas
Programación en Español: DotNetcr.com
  #6 (permalink)  
Antiguo 18/01/2011, 16:23
 
Fecha de Ingreso: diciembre-2010
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Insertar datos en un excel ????

Cita:
Iniciado por royrojas Ver Mensaje
Código:
       Dim objExcel As Microsoft.Office.Interop.Excel.Application


        'Una variable de tipo Libro de Excel   
        Dim xLibro As Microsoft.Office.Interop.Excel.Workbook
        Dim Col As Integer, Fila As Integer

        'creamos un nuevo objeto excel   
        objExcel = New Microsoft.Office.Interop.Excel.Application

        'Usamos el método open para abrir el archivo que está _   
        ' en el directorio del programa llamado archivo.xls   
        xLibro = objExcel.Workbooks.Open(System.AppDomain.CurrentDomain.BaseDirectory + "\archivoexcel.xls")
        
============ mi codigo ===========

           Dim xlBooks As Workbooks
           xlBooks = objExcel.Workbooks

            Dim xlBook As _Workbook
            xlBook = xlBooks.Add(XlWBATemplate.xlWBATWorksheet)

            Dim xlSheet As Sheets
            xlSheet = xlBook.Worksheets

            Dim worksheet As _Worksheet
            worksheet = CType(xlSheet.Item(1), _Worksheet)
            If worksheet Is Nothing Then
                'MsgBox("Error: hoja de trabajo es nula")
                Environment.ExitCode = 0
                Return "Error: hoja de trabajo es nula"
                Exit Function
            End If

            '===Escribe en la celda 1,1
            worksheet.Cells(1, 1).Value2 = "Mi Nuevo Valor"

========fin mi codigo==========

        'Hacemos el Excel Visible   
        objExcel.Visible = True

======================
este codigo lo puse sin compilar ni nada, a puro texto, asi que si te da error en algun punto deberia ser facil arreglarlo, pero asi como esta deberia funcionar.
gracias crack ... solo una cosa mas ... me da fallo en "XlWBATemplate" , no se ha decalarado .... no se como arreglarlo .... lo demas ok (estoy en VB.net 2005)
  #7 (permalink)  
Antiguo 18/01/2011, 16:28
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Insertar datos en un excel ????

podrias quitarle lo de XlWBATemplate.xlWBATWorksheet

o bien XlWBATemplate.xlWBATWorksheet esta en la referencia

Imports Microsoft.Office.Interop.Excel
__________________
roy rojas
Programación en Español: DotNetcr.com

Etiquetas: excel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:53.