Buen dia
Algun componente que me recomienden para exportar DataGridView a Excel?
VB.Net
Gracias
| ||||
Respuesta: Exportar a Excel Que tal cestradah, mira este enlace hay explican claramente como hacerlo Export DataGridView To Excel Saludos.
__________________ "SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'" |
| ||||
Respuesta: Exportar a Excel El ejemplo de ese link es precisamente a lo que me refería al decir que hay que poner una referencia, que en este caso es el Microsft.Interop.Office.Excel. Ahora bien, este componente .Net no es el que habitualmente está instalado en el sistema cuando tienes el MS Office (200, 2003 ó 2007) instalado. Sino el componente .Net que se descarga desde la web y que contiene las PIAs (Primary Interop Assemblies) de Microsoft.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Exportar a Excel Checate esto Function exporta() Try Dim RowsCount As Int32 = Me.dtgfactxc.SelectedRows.Count - 1 If RowsCount > -1 Then 'Arreglo para los nombres de campos. Dim FldNames() As String = {"id", "auxiliar", "operador", "periodo", "factura", "nota", "monto_dolar", "monto_colon", "registrada", "num_liquidacion", "nota_interna", "orden_pago", "mes_liquidado", "monto_liquidado", "monto_pendiente", "fecha"} 'Arreglo para los datos seleccionados. Dim DataArr(RowsCount, 15) As Object Dim ColsCounter As Int32 = 0 'Populate the data array - The list is sorted in ascending order. For RowsCounter As Int32 = 0 To RowsCount For Each cell As DataGridViewCell In Me.dtgfactxc _ .SelectedRows(RowsCount - RowsCounter) _ .Cells DataArr(RowsCounter, ColsCounter) = cell.Value ColsCounter = ColsCounter + 1 Next ColsCounter = 0 Next 'Populate the data array - The list is sorted in descending order. 'Dim Rows As Int32 = 0 'For Each row As DataGridViewRow In Me.DataGridView1.SelectedRows 'For Each cell As DataGridViewCell In Me.DataGridView1.SelectedRows(Rows).Cells 'DataArr(Rows, ColsCounter) = cell.Value 'ColsCounter = ColsCounter + 1 'Next 'ColsCounter = 0 'Rows = Rows + 1 'Next 'Variables for Excel. Dim xlApp As New Excel.Application Dim xlWBook As Excel.Workbook = xlApp.Workbooks.Add( _ Excel.XlWBATemplate.xlWBATWorksheet) Dim xlWSheet As Excel.Worksheet = CType(xlWBook.Worksheets(1), Excel.Worksheet) Dim xlCalc As Excel.XlCalculation 'Save the present setting for Excel's calculation mode and turn it off. With xlApp xlCalc = .Calculation .Calculation = Excel.XlCalculation.xlCalculationManual End With 'Write the field names and the data to the targeting worksheet. With xlWSheet .Range(.Cells(1, 1), .Cells(1, 16)).Value = FldNames .Range(.Cells(2, 1), .Cells(RowsCount + 2, 16)).Value = DataArr .UsedRange.Columns.AutoFit() End With With xlApp .Visible = True .UserControl = True 'Restore the calculation mode. .Calculation = xlCalc End With 'Sacar los elementos de memoria. xlWSheet = Nothing xlWBook = Nothing xlApp = Nothing GC.Collect() End If Catch ex As Exception MessageBox.Show("Error al Tratar de exportar los datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Function Funciona perfectamente... |
| |||
Respuesta: Exportar a Excel Que tal jaullo Estaba checando la opcion que me das pero me quedo con la duda de que libreria hay que importar para manejar las variables de Excel, ya estuve buscando y no encuentro nada De antemano, Gracias |
| ||||
Respuesta: Exportar a Excel Es que lo que te propone jaullo es lo mismo que te puso Carlojas y lo mismo que te propuse yo: La librería es una de las PIAs (Primary Interop Assemblies) de Microsoft. Esa es la librería que permite instanciar objetos Excel o Word. No hay otra. No importa cuantas vueltas le des, cualquier ejemplo que busques en la web, sea en C#.Net o VB.Net requiere esa librería. La tienes que descargar de la página web de MS, Acá tienes los link de Microsoft: Office XP PIAs Office 2003 Update: Redistributable Primary Interop Assemblies 2007 Microsoft Office System Update: Redistributable Primary Interop Assemblies Insisto: No pierdas tiempo buscando. TODOS los ejemplos en .NET usan una de estas tres PIA. Descarga la que vaya a usar, instalala y luego ponla como referencia.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Exportar a Excel Bueno es cierto lo que dice gnzsoloyo la mayoria de ejemplos que encuentres instancian esta libreria. Microsoft.office.interop.excell ahi muchas maneras de hacerlo, asi como te lo hemos mostrado hasta ahora importando la libreria o de esta otra forma. 'funcion exportar a excel Sub exportaexcell() Dim ApExcel As Object ApExcel = CreateObject("Excel.application") ' Hace que Excel se vea ApExcel.Visible = True 'Agrega un nuevo Libro ApExcel.Workbooks.Add() 'Poner Titulos ApExcel.cells(1, 1).formula = "Interesados" ApExcel.cells(2, 1).Formula = txtnombre.Text 'cambiar la fuente ApExcel.cells(1, 1).Font.Size = 12 ApExcel.cells(1, 2).Font.Size = 12 ApExcel.cells(1, 3).Font.Size = 12 ApExcel.cells(1, 4).Font.Size = 12 ApExcel.cells(1, 5).Font.Size = 12 ApExcel.cells(1, 6).Font.Size = 12 ApExcel.cells(1, 2).formula = "Código Cliente" ApExcel.cells(2, 2).Formula = txtidclien.Text ApExcel.cells(1, 3).formula = "Cédula Juridica" ApExcel.cells(2, 3).Formula = txtcedjuridica.Text ApExcel.cells(1, 4).formula = "Por Concepto de" ApExcel.cells(2, 4).Formula = cboProducto.Text ApExcel.cells(1, 5).formula = "Cantidad" ApExcel.cells(2, 5).Formula = mktxtcantidad.Text ApExcel.cells(1, 6).formula = "Total a Pagar" ApExcel.cells(2, 7).Formula = txtfinal.Text ' Aplica Formula 'ApExcel.cells(3, 4).Formula = "=B3-C3" ' Hace una Seleccion de celdas y pone bordes de Color ApExcel.RANGE("B3:D3").BORDERS.COLOR = RGB(255, 0, 0) ApExcel = Nothing End Sub |
| |||
Respuesta: Exportar a Excel Si gnzsoloyo, disculpa me habia ido por otro asunto, y a final de cuentas el error lo estaba cometiendo yo al no agregar la referencia al proyecto. Bueno, ahora se compila todo "bien" (sin errores), el problema es al ejecutar la funcion nunca me ejecuta Excel, estuve checando en el Task Manager y nisiquiera abre la aplicacion (de Excel). Que pudiera ser, por donde creen que le tenga que buscar? |
| ||||
Respuesta: Exportar a Excel El manejo de un objeto Excel no significa que se abra el Excel, a menos que específicamente lo invoques. Por default, el objeto se genera como invisible, pero si abres el administrador de tareas, verás que está allí, en memoria. Todo el asunto pasa por saber si lo que quieres es crear el documento y grabarlo solamente o crearlo y visualizarlo. Presta atención a este segmento:
Código vb.net:
Eso es lo que hace al Excel visible. Si esa línea no está, el Excel no se abre, pero trabaja en background. Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Exportar a Excel Si, es a lo que me refiero, pense que era porque solo estaba creando el documento y guardandolo, pero no me aparece nisiquiera en el Administrador de Tareas cuando carga. Y bueno suponiendo que asi es.... en que ruta me lo esta guardando? Donde cambio el codigo para darle la ruta a guardar del archivo? Gracias |
| ||||
Respuesta: Exportar a Excel En En el momento de guardar el archivo, además del nombre tienes que poner la ruta donde va a estar.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Exportar a Excel Saludos, - Disculpen la intromisión y agradesco de antemano su ayuda, bueno tratare de ser lo mas claro y comprensible. - luego de generar los datos con excel - Al finalizar aparece un mensaje diciendo( DESEA VER EL REPORTE EN EXCEL) SI - NO xlb.Save() 'GUARDAMOS EL LIBRO If MsgBox("¿Desea ver el Reporte?", MsgBoxStyle.YesNo, " ..::Mensaje:: .") = MsgBoxResult.Yes Then xla.Visible = True Else MsgBox("Proceso Terminado...!" & " Los Archivos se Encuentra en C:\Tasas\", MsgBoxStyle.Information, "Mensaje") Utilitario.KillProcess("EXCEL.exe") 'MODULO QUE ELIMINA TODOS LOS EXCEL End If xls = Nothing xlb = Nothing - Cuando el mensaje pregunta ¿Desea ver el Reporte?, si lo doy en Si. El excel se visualizara trankilamente para el usuario, pero cuando el usuario cierra el excel. En la barra de tareas, en la ficha proceso. Este mismo excel se queda ejecutado. Esto genera problemas al abrir otros archivos con excel. - Cuando el mensaje pregunta ¿Desea ver el Reporte?, le doy en No. Se muestra donde se guardan los Excel, y se ejecuta el modulo que elimina todos los excel. En Resumen: Como aria, cuando en el mensaje le doy que SI: el usuario observa el reporte y cuando cierre el excel, no se quede pegado en la barra de tareas. Gracias de antemano por sus respuestas. |
| ||||
Respuesta: Exportar a Excel Mira: Aún no lo he probado, pero se supone que los objetos Excel creados en memoria son instancias COM, por lo que se requiere el uso de la clase Marshall para destruirlos. La idea sería liberarlos de modo que los garbage collectors puedan limpiar la memoria. Algo así:
Código vb.net:
El este caso se supone que estoy liberando los objetos en cada nivel (hoja, libro y aplicación).Ver original Además de esto, yo estoy usando algunas veces un recurso algo rústico: capturo el objeto Process de Excel y luego directamente lo mato.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Exportar a Excel Bien, ya lo he comprobado (y de paso lo estoy implementando en mis aplicaciones): Los objetos COM creados desde .Net usando alguna de las Interop de Office se deben desactivar por medio de la llamada a
Código VB.NET:
donde objeto es una instancia de interfase creada para usarlo (por ejemplo, Excel.Application o bien Excel.WorkBook). Ver original El único detalle a tener en cuenta es que se debe ejecutar antes de liberar la variable, es decir:
Código VB.NET:
Caso contrario, no podrá encontrar el camino hacia el COM instanciado en la memoria. Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Exportar a Excel Ademas Siempre debemos tomar el cuenta el Recolector de Basura para poder eliminar dichas variables porque no necesariamente se van a borrar de la memoria. Gc.Recollect() luego de declarar la variable ojeto nothing
Código vb.net:
Ver original
__________________ La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones Última edición por Dradi7; 03/08/2009 a las 09:03 |
| ||||
Respuesta: Exportar a Excel ¡Cierto! Gracias por el recordatorio. Me había olvidado de mencionarlo... ![]()
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |