Sunteți pe pagina 1din 8

1.1.1. Ejemplo de exportar datos de VB.

NET a Word

Crear un proyecto llamado ExportarWord y realizar un programa que permita a un


usuario exportar los datos de un control DataGridView de Visual Basic .NET a una
tabla en un archivo de Microsoft Word.

 Agregar referencia.
Desde el submenu proyecto seleccione la opción Agregar referencia… y busque el
nombre del componente Microsoft.Office.Interop.Word, se deberia visualizar la
siguiente pantalla:

Figura 1.28. Agregar referencia .NET

Al estar seleccionado dicho componente, pulse el botón Aceptar para incorporarlo al


proyecto.

 Crear la interfaz de usuario.

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 1 Button y 1
DataGridView.

Figura 1.29. Interfaz de usuario (ExportarWord)


 Establecer las propiedades de los objetos de la interfaz de usuario.
Establezca las siguientes modificaciones a los controles:

Tabla 1.8. Propiedades de controles proyecto ExportarWord

Control Propiedad Valor


DataGridView1 Name tabla
Button1 Name botonexportar
Text Exportar a Word
Form1 Name formulario
Text Exportar datos a Word.

La interfaz de usuario queda como se muestra en la siguiente figura:

Figura 1.30. Interfaz de usuario modificada (ExportarWord)

 Escribir código
a) Seleccione el objeto botonexportar, de doble clic para abrir el editor de código
y escriba el siguiente código:
Dim archivo_Word As Microsoft.Office.Interop.Word.Application
Dim Documento As Microsoft.Office.Interop.Word.Document
Dim Parrafo As Microsoft.Office.Interop.Word.Table
Dim filas As Integer
Dim columnas As Integer
Dim dato As Object
archivo_Word = New Microsoft.Office.Interop.Word.Application
archivo_Word.Visible = True
Documento = archivo_Word.Documents.Add
Parrafo = Documento.Tables.Add(Documento.Range(0, 0), tabla.RowCount + 1,
tabla.Columns.Count)
For columnas = 0 To tabla.Columns.Count - 1
arrafo.Cell(1, columnas + 1).Range.InsertAfter(tabla.Columns(columnas).HeaderText)
For filas = 0 To tabla.RowCount - 1
dato = tabla.Item(columnas, filas).Value
Parrafo.Cell(filas + 2, columnas + 1).Range.InsertAfter(dato)
Next
Next
archivo_Word = Nothing
Documento = Nothing
Parrafo = Nothing

Se definen los objetos archivo_Word de tipo Aplicación de Word


(Word.application), Documento de tipo documento de Word
(Word.Document), Parrafo de tipo Tabla de Word (Word.Table), como
también se crean las variables filas y columnas de tipo Integer y dato de tipo
Object. Se asigna espacio de memoria al objeto archivo_Word de tipo
Word.Application, se hace visible un archivo de Word y se añade un nuevo
documento de Word con Word.Documents.Add. Al objeto Parrafo se le asigna
una tabla desde un rango (0,0, total_filas, total_columnas). Se ejecutan dos
ciclos For. En el ciclo externo se recorre la cantidad de columnas existentes en el
objeto DataGridView (tabla.Columns.Count - 1) y se asigna a la primera fila
en la posición del valor de la variable columnas+1 el nombre de la columna del
objeto DataGridView utilizando el método HeaderText; en el ciclo más interno
se recorre cada una de las filas del objeto DataGridView y se van asignando a la
variable dato el valor de cada celda(columnas, filas) del objeto tabla y se
coloca en la celda (j, i) de la tabla de Word el valor que tiene el objeto dato. Por
último se liberan todos los objetos utilizando la palabra clave Nothing (liberar).

b) De doble clic sobre el formulario para abrir el editor del procedimiento


formulario_load y escriba el siguiente código:

With tabla
.Columns.Add("Código", "Código")
.Columns.Add("Producto", "Producto")
.Columns.Add("Precio", "Precio")
.Columns.Add("Inventario", "Inventario actual")
.Columns.Add("Proveedor", "Nombre Proveedor")
.RowCount = 10
For i As Integer = 0 To .RowCount - 1
.Item(0, i).Value = i.ToString
.Item(1, i).Value = "Producto " & i.ToString
.Item(2, i).Value = FormatNumber(225 + i)
.Item(3, i).Value = CInt(Rnd() * 100)
.Item(4, i).Value = "Proveedor: " & i.ToString
Next
End With

Con el anterior código se llena el objeto tabla con datos. Se le adicionan cinco
nombres, uno en cada columna con el método Add de la propiedad Columns y
se asignan como valor inicial a la propiedad RowCount 10 filas. Con un ciclo
For que se ejecutara desde una posición i igual a cero (0) hasta el numero de
filas -1 del objeto tabla y por cada fila se adicionaran cinco ítems. En la primera
columna el valor de i, en la segunda un texto “Producto” unido con el valor de
la variable i, en la tercera el valor 225 sumándole el valor de i, en la cuarta un
número aleatorio entre 0 y 100 y por ultimo un texto “Proveedor” unido al valor
de i.

 Ejecutar el proyecto
Al ejecutarse el proyecto en el entorno de desarrollo de Visual Basic.NET/2008, se
visualizara el formulario con los datos que se asignaron en el procedimiento
formulario_Load, se visualizara la siguiente figura:
Figura 1.31. Formulario con datos cargados desde el load

Al pulsar el botón Exportar a Word, se abrirá un nuevo documento de Word y se


visualizaría lo siguiente:

Figura 1.32. Ventana de Word con los datos exportados de VB.NET

En este momento puede seleccionar todos los datos y pulsar el icono bordes de Word
y escoger la opción “Todos los bordes” para que el documento presente el
siguiente aspecto:

Figura 1.33. Tabla de Word con datos y bordes


Ejemplo importar y exportar datos de Excel

Hacer un programa que permita a un usuario exportar y/o importar datos de una hoja de
Excel. Cuando se importe de Excel los datos se deberán mostrar en un control
DataGridView de Visual Basic .NET, así como, se deberá solicitar el rango de datos a
importar. Al exportar se deberán enviar todos los datos que contenga el control
DataGridView.

 Crear la interfaz de usuario.


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Label, 1 TextBox, 2
Button y 1 DataGridView.

 Establecer las propiedades de los objetos de la interfaz de usuario.


Establezca las siguientes modificaciones a los controles:

Propiedades de controles proyecto ImportarExportarExcel


Nombre del proyecto: ImportarExportarExcel
Control Propiedad Valor
Label1 Name texto
Text Rango a importar de Excel
Font – Bold true
TextBox1 Name rango
Text A1:D10
DataGrigview1 Name tabla
Button1 Name botonimportar
Text Importar de Excel
Button2 Name botonexportar
Text Exportar a Excel
Form1 Name formulario
Text Importar y Exportar de Excel.

 Escribir código
Antes de escribir código, se deberá crear un archivo en Excel llamado
“importardatos.xls” y en la hoja uno (1) escribir información en el rango A1:D10,
como se muestra en la siguiente figura:
Hoja de Excel con datos

a) Seleccione el objeto botonimportar, de doble clic para abrir el editor de código y


escriba el siguiente código:

importar_Excel("c:\importardatos.xls", "hoja1", rango.Text, tabla)

Se llama al procedimiento importar_Excel, el cual tiene como parametros: la ruta y el


nombre del archivo de Excel, el nombre de la hoja donde se encuentran los datos en
Excel, el rango de datos a importar y el control DataGridView (tabla).

b) De doble clic sobre el formulario y cree el siguiente procedimiento Sub:

Private Sub importar_Excel(ByVal archivoexcel As String, ByVal nombrehoja As String,


ByVal rangohoja As String, ByVal tabla As DataGridView)
Try
If System.IO.File.Exists(archivoexcel) Then
Dim conjuntodedatos As System.Data.DataSet
Dim adaptadordedatos As System.Data.OleDb.OleDbDataAdapter
Dim conexion As String = "provider=Microsoft.Jet.OLEDB.4.0; " & "data source=" &
archivoexcel & "; Extended Properties=Excel 8.0;"
Dim conectordedatos As System.Data.OleDb.OleDbConnection
conectordedatos = New System.Data.OleDb.OleDbConnection(conexion)
Dim selecciondedatos As String = "select * from " & "[" & nombrehoja & "$" &
rangohoja & "]"
adaptadordedatos = New System.Data.OleDb.OleDbDataAdapter(selecciondedatos,
conectordedatos)
conjuntodedatos = New System.Data.DataSet
adaptadordedatos.Fill(conjuntodedatos)
conectordedatos.Close()
With tabla
.DataSource = conjuntodedatos
.DataMember = conjuntodedatos.Tables(0).TableName
End With
conjuntodedatos = Nothing
conexion = Nothing
adaptadordedatos = Nothing
conectordedatos = Nothing
Else
MsgBox("No se ha encontrado el archivo: " & archivoexcel,
MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Se crea el procedimiento importar_Excel el cual recibe como parámetros: las variables
archivoexcel, nombrehoja, rangohoja de tipo String y tabla de tipo DataGridView.
La variable archivoexcel contendrá la ruta y el nombre del archivo de Excel,
nombrehoja almacenara el nombre de la hoja de Excel, rangohoja obtendrá el rango
a importar y tabla visualizara los datos importados. Utilizando la estructura if y con el
método Exists se determina si el archivo existe. Si es verdadero, se crean las
variables: conjuntodedatos de tipo DataSet para guardar el conjunto de datos a
importar; adaptadordedatos de tipo OleDbDataAdapter, con la cual se obtiene el
adaptador de datos OLEDB para recuperar los datos; conexion de tipo String que
contendrá la cadena de conexión a Excel; conectordedatos de tipo OleDbConnection
que representa una conexión única a un origen de datos, en este caso, se le asigna
espacio de memoria y se le envía como parámetro la cadena de conexión;
selecciondedatos de tipo String a la cual se le asigna la sentencia de selección SQL
(select) que trae los datos de la hoja1(nombrehoja) en el rango
especificado(rangohoja). Al adaptador de datos adaptadordedatos se le asigna
espacio de memoria, enviándole como parámetro los datos seleccionados
(selecciondedatos) y la cadena de conexión (conexiondedatos), también se asigna
espacio de memoria de tipo DataSet al objeto conjuntodedatos y el adaptador de
datos (adaptadordedatos) se rellena (fill) con el conjunto de datos. Por otro lado se
cierra la conexión de los datos con close (). Además se asigna a la propiedad
DataSource del objeto tabla el conjunto de datos y al adaptador de datos se le asigna
la lista de datos que contiene el archivo de Excel, por último se liberan todos los objetos
utilizando la palabra clave Nothing (liberar). En caso contrario se mostrara un mensaje
donde se informa que no se pudo encontrar el archivo de Excel.

c) Seleccione el objeto botonexportar, de doble clic para abrir el editor de código y


escriba el siguiente código:

exportar_Excel(tabla, tabla.Rows.Count)

Se llama al procedimiento exportar_Excel, el cual tiene como parametros: el


DataGridView llamado tabla y la cantidad de filas que contiene dicho objeto utilizando
la funcion count de la propiedad rows.

d) De doble clic sobre el formulario y cree el siguiente procedimiento Sub:

Private Sub exportar_Excel(ByVal tabla As DataGridView, ByVal nrofilas As Long)


Dim archivo_excel As Object
Dim libro_excel As Object
Dim hoja_excel As Object
Dim i As Integer
Dim j As Integer
Dim iColumnas As Integer
If nrofilas = 0 Then
MsgBox("No hay datos para exportar a excel. Se ha indicado 0 en el parámetro
Filas ") : Exit Sub
Else
archivo_excel = CreateObject("Excel.Application")
libro_excel = archivo_excel.Workbooks.Open("c:\exportardatos.xls")
hoja_excel = archivo_excel.ActiveSheet
iColumnas = 0
For i = 0 To tabla.Columns.Count - 1
If tabla.ColumnHeadersVisible Then
iColumnas = iColumnas + 1
hoja_excel.Cells(1, iColumnas) = tabla.Columns(i).HeaderText
For j = 0 To nrofilas - 1
hoja_excel.Cells(j + 2, iColumnas) = tabla.Item(i, j).Value
Next
End If
Next
archivo_excel.Visible = True
End If
hoja_excel = Nothing
libro_excel = Nothing
archivo_excel = Nothing
End sub

Se crea el procedimiento exportar_Excel el cual recibe como parámetros: las variables tabla
de tipo DataGridView y nrofilas de tipo long. El objeto tabla contendrá los datos a exportar y
nro_filas el numero de filas del objeto tabla. Se definen los objetos archivo_excel,
hoja_excel, libro_excel de tipo Object y se crean las variables i, j, icolumnas de tipo Integer.
Utilizando la estructura if se pregunta si nro_filas es igual a cero (0), si es verdadero se
imprimirá el mensaje de la no existencia de datos en el archivo Excel y se saldrá del
procedimiento por intermedio de la palabra clave exit. En caso contrario se crea un objeto
(createobject) que inicializa una aplicación Excel y es asignado al objeto archivo_excel, al
objeto libro_excel se le asigna la ruta y el nombre del archivo de Excel que se va a abrir
utilizando el método Open de WorkBooks, como también se asigna la hoja activa
(ActiveSheet) del archivo de Excel a hoja_excel. Se inicializa la variable icolumnas en cero y
ejecutan dos ciclos for. En el ciclo externo se recorre la cantidad de columnas existente en el
objeto DataGridView (tabla.Columns.Count - 1). Si el nombre de la columna es visible se
incrementa la variable icolumna en uno (1) y se asigna a la primera celda en la posición del
valor de la variable icolumna el nombre de la columna del objeto DataGridView utilizando el
método HeaderText, en el ciclo mas interno se recorre cada una de las filas del objeto
DataGridView y se coloca en la celda (j, i) el valor que tiene el objeto tabla en la posición (i, j).
Por otro lado se hace visible (se abre) el archivo de Excel. Por último se liberan todos los
objetos utilizando la palabra clave Nothing (liberar).

 Ejecutar el proyecto
Al escribir el rango y pulsar el botón “Importar de Excel”, se visualizara la siguiente
figura:
Formulario con datos importados de Excel

Si se pulsa el boton “Exportar a Excel”, se exportaran todos los datos del objeto tabla y se
abrira el archivo de Excel “exportardatos.xls” en c:\. Dicho archivo debe existir para que no
ocurra ningun error.

S-ar putea să vă placă și