Excel, leer la celda A1 desde ASP.NET Fecha: 18/Mar/2005 (12 de Marzo de 2005)
|
Introducción
A muchos desarrolladores se les ha presentado la necesidad de crear reportes con ciertos estilos, provenientes de herramientas de terceros; por lo regular a los ejecutivos les gusta la forma en que se presentan los informes en formato de Microsoft Office Excel y muchas veces se nos solicita exportar a esta aplicación informes generados por sistemas de gestión, para ajustarlos a sus necesidades y gustos. Con este artículo pretendo mostrar una forma sencilla de leer una base de datos y generar un informe directamente en Excel, aprovechando todas las funcionalidades de esta herramienta; se podría decir que más del 50 por ciento de las computadoras de oficina cuentan con alguna versión de Microsoft Office, así que estimo que le será de gran utilidad a algún lector.
Comencemos
Creamos una nueva solución en Visual Studio .NET y agregamos una referencia a la librería de objeto de Excel que se encuentra en la paleta COM de la ventana de Agregar Referencias en Visual Studio .NET (Ver Figura 1).
Figura 1.
Si la versión de Office con la que cuentan es la 2000, la librería sería Microsoft Excel 11.0 Object Library; luego hacemos clic en Seleccionar y luego en Aceptar y listo.
Creamos una aplicación de servicio de WEB y en el web.config escribimos
<configuration>
<system.web>
<identity impersonate="true"/><!-- muy importante -->
…….
</system.web>
</configuration>
A continuación sigue código en Visual Basic (o C# o C++.NET):
using System; using System.Reflection; private void bImportar_ServerClick(object sender, System.EventArgs e) { Excel._Application xlApp; Excel._Workbook xlLibro; Excel._Worksheet xlHoja1; Excel.Sheets xlHojas ; string fileName = "c:\\temp\\harina.xls"; xlApp = new Excel.Application(); xlApp.Visible = true; xlLibro = xlApp.Workbooks.Open(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value , Missing.Value , Missing.Value ); xlHojas = xlLibro.Sheets ; xlHoja1 = (Excel._Worksheet)xlHojas["Hoja1"]; string val1 = (string) xlHoja1.get_Range ("A1",Missing.Value ).Text; xlLibro.Close (false, Missing.Value, Missing.Value ); xlApp.Quit(); }