Como Integrarse con Excel
De
<keywords content="keywords"> integracion excel, Microsoft Excel, Interop.Excel </keywords>
Aplica para la EDICIÓN ENTERPRISE .NET |
Como Integrarse con Excel
No es inusual que un proyecto requiera la transferencia de datos desde/hacia un archivo de Excel, ya sea para generar un informe, incluir información de un sistema externo en el modelo de datos Bizagi o incluso la ejecución de una operación compleja con una macro existente. Sea cual sea el caso, esto implicará el uso de un componente que tiene que ser registrado en Bizagi con el fin de usarlo en una Expresión (vea Librería de Componentes)
Buscanco en la Web se pueden encontrar algunos componentes listos para usar. Aunque el uso de estas librerías es la forma más rápida para manejar archivos de Excel, algunas de las soluciones no tienen plena compatibilidad con Excel y la mayoría (si no todos) tienen que ser comprados. Una alternativa es utilizar Automatización. Prácticamente la totalidad de las acciones que se pueden realizar de forma manual a través de la interfaz de usuario también se puede realizar mediante programación.
En Soporte Microsoft se pueden encontrar varios articulos con ejemplos sobre Automatización de Excel:
- Cómo automatizar Microsoft Excel desde Microsoft Visual C# .NET
- Cómo transferir datos a un libro de Excel utilizando Visual C# 2005 o Visual C# .NET
- Aspectos que hay que tener en cuenta para realizar la automatización de Office en el servidor
- Cómo mejorar el rendimiento del código de automatización de Office
- Cómo automatizar Excel utilizando C# para rellenar u obtener datos de un rango utilizando matrices
- Cómo transferir datos XML a Microsoft Excel 2002 mediante Visual C#
- Aplicación de Office no se cierra después de la automatización desde cliente de Visual Studio .NET
Ejemplo
El siguiente es un ejemplo de cómo la automatización puede ser utilizada para integrar Bizagi con Excel. Se asume que la organización (un banco) tiene un archivo de Excel que contiene todas las operaciones necesarias para determinar el pago mensual de una hipoteca. Parte de la información necesaria en el archivo de Excel se extrae de Bizagi y el resultado se almacena en Bizagi. Descargar el archivo desde aquí: MortgageCalculator.xls
En Bizagi existiría una forma en la cual se ingresa la tasa de interés anual, el plazo de la hipoteca y el monto. Después que esta información ha sido ingresada, se hace clic en el botón Calcular, lo que hará que se ejecute una Expresión en la cual se utiliza el método de una librería personalizada para determinar el pago mensual de la hipoteca.
La Expresión tendría las siguientes instrucciones:
//Obtener la información ingresada en la forma var rate = <MortgageApplication.AnnualInterestRate>; var term = <MortgageApplication.MortgageTerm>; var amount = <MortgageApplication.MortgageAmount>; //Establecer la ruta del archivo Excel var file = "D:\\Temp\\MortgageCalculator.xls"; //Utilizar el método del componente que recibe como parámetros la tasa de interés anual, //el plazo de la hipoteca en años, el monto y la ruta del archivo. //El resultado se guarda en una variable var payment = BizagiExcelIntegration.CInvokeExcel.MortgageMonthlyPayment(rate, term, amount, file); //Guardar el resultado en un atributo no editable incluido en la forma Me.setXPath("MortgageApplication.MonthlyPayment", payment);
Adicionalmente, es necesario crear el componente usado en esta Expresión. Con la ayuda de Microsoft Visual Studio .NET, cree un nuevo Proyecto de Librería de Clases. Para este ejemplo, el proyecto se llama BizagiExcelIntegration. Incluya una clase llamada CInvokeExcel que tenga el método MortgageMonthlyPayment. Para poder probar el ejemplo presentado aqui, descargue y extraiga este componente: BizagiExcelIntegration.rar.
Este sería el código de la clase CInvokeExcel:
using System; using InteropExcel; namespace BizagiExcelIntegration { public class CInvokeExcel { public CInvokeExcel() { // // TODO: Add constructor logic here // } public static double MortgageMonthlyPayment(double AnnualRate, double YearsTerm, double MortgageAmount, string FilePath) { //Crear la instancia Excel con el archivo dado CExcelDataSourceSingleton cExcel = new CExcelDataSourceSingleton(); cExcel.Target = FilePath; //Usar SetCellValue para copiar AnnualRate (tasa anual), YearsTerm (plazo en años) y MortgageAmount (monto de la hipoteca) en la hoja Excel cExcel.SetCellValue(1, "C4", AnnualRate); cExcel.SetCellValue(1, "C6", YearsTerm); cExcel.SetCellValue(1, "C8", MortgageAmount); //Utilizar este objeto para recibir el valor calculado por Excel object oRetVal = cExcel.GetCellValue(1, "C10"); cExcel.CloseFile(); double dReturn = Convert.ToDouble(oRetVal); return dReturn; } } }
La segunda linea (using InteropExcel), significa que esta librería usa otra librería, la cual que contiene la clase CExcelDataSourceSingleton. Es un componente intermedio entre Microsoft.Office.Interop.Excel y la anterior librería; por lo tanto el proyecto BizagiExcelIntegration debe tener una referencia a esta otra librería. Esta clase ya compilada puede ser descargada y extraida de aquí: InteropExcel.rar.
Cuando se genere el proyecto, los siguientes tres componentes se podran encontrar en ruta de resultados: BizagiExcelIntegration.dll, InteropExcel.dll y Interop.Microsoft.Office.Interop.Excel.dll. Todods estos componentes se deben registrar en Bizagi usando la herramienta Libreria de Componentes.
Luego de realizar las configuraciones necesarias, es posible ensayar este ejercicio en la aplicación web.
<comments />