Cómo escribir múltiples filas a Excel usando Vb.Net
Al crear aplicaciones de Visual Basic.Net, considere agregar una función de exportación a Excel además de los informes impresos. La funcionalidad agregada requiere poco código y sus clientes pueden ordenar y analizar los datos de la forma que deseen. Utilice el diseñador de formularios en Visual Basic para agregar esta función.
1.
Abre Visual Studio y crea un nuevo proyecto de Visual Basic. Haga clic en "Archivo" y luego en "Nuevo proyecto". Cuando aparezca el nuevo cuadro de diálogo del proyecto, seleccione "Visual Basic / Windows" en la vista de árbol, haga clic en el ícono "Aplicación de Windows Forms", nombre el proyecto "ExcelTest", luego haga clic en "Aceptar". Después de una breve espera, aparecerá el diseñador de formularios.
2.
Agregue una referencia al componente ActiveX de Excel. Haga clic en "Proyecto" en los menús desplegables, luego haga clic en "Agregar referencia". Haga clic en la pestaña "COM" y desplácese hacia abajo hasta "Microsoft Excel". Puede haber más de una instancia de Excel en la lista, así que elija una versión reciente que está disponible en las computadoras de los clientes.
3.
Agregue un botón al formulario. Haga clic en el icono de la Caja de herramientas para abrir la caja de herramientas, luego arrastre un botón al formulario. Haga clic derecho en el botón y elija "Propiedades". Cuando aparezca la lista de propiedades, nombre el botón "btnToExcel" y cambie la propiedad de Texto a "Para sobresalir". Ahora haga clic en el botón nuevo para abrir la ventana de código.
4.
Agregue las importaciones de la biblioteca a la parte superior del código del programa de la siguiente manera:
Imports Microsoft.Office.Interop Imports System.Text Public Class Form1
5.
Declare campos privados para los objetos de Excel:
Private excelApp = New Excel.Application Private excelDoc As Excel.Workbook Private excelSheet As Excel.Worksheet Private range As Excel.Range
6.
Cree el contenido que irá a la hoja de cálculo, por ejemplo:
Private Sub btnToExcel_Click(sender As System.Object, e As System.EventArgs) Handles btnToExcel.Click Dim txt As New StringBuilder Dim i, j As Integer For i = 1 To 20 For j = 1 To 10 txt.Append(i * j) txt.Append(vbTab) Next txt.AppendLine() Next Clipboard.SetText(txt.ToString)
El contenido enviado a la hoja de cálculo en este ejemplo utiliza una tabla de multiplicar de 10 por 20. Todos los datos se adjuntan a un StringBuilder con columnas separadas por caracteres de tabulación (vbTab) y cada fila separada por un carácter de final de línea (utilizando el método AppendLine). Después de que todo el contenido se copia en el StringBuilder, se coloca en el Portapapeles. Una vez que la hoja de cálculo esté abierta, el código pegará estos datos en la hoja de cálculo.
7.
Abra la hoja de cálculo:
excelApp = CreateObject ("Excel.Application") excelApp.Visible = True excelDoc = excelApp.Workbooks.Add () excelSheet = excelDoc.ActiveSheet
Aquí, el programa crea un nuevo objeto de aplicación de Excel utilizando el método CreateObject y luego establece su propiedad Visible en Verdadero para decirle a Excel que se muestre en la pantalla. A continuación, crea una nueva hoja de trabajo y obtiene un identificador para la página activa.
8.
Pegue los datos en la primera celda de la hoja de cálculo:
range = excelSheet.Cells(1, 1) excelSheet.Paste(range) End Sub
Clase final
Obtenga el rango de la primera celda, luego pegue el contenido del portapapeles en la celda. Las pestañas y los avances de línea separan las columnas y filas.
9.
Ejecuta el programa. Haga clic en "F5" para iniciar el programa, luego haga clic en el botón "Para sobresalir" para abrir y ver la hoja de cálculo.
Cosas necesarias
- Microsoft Visual Studio o Visual Basic Express 2010
- Microsoft Office Excel 2010, 2007 o XP
Propina
- Esta misma técnica funciona para datos de consultas SQL, archivos de texto o cualquier otro dato que pueda presentarse en un informe o ListView. Para una mejor presentación, incluya el nombre de una plantilla de Excel en el método Workbook.Open y los datos se superpondrán en una plantilla preformateada.