Leer o Escribir un archivo de Excel

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > Asistente de Procesos > Integrar > Integración con aplicaciones > Integrar APIs o código personalizado en Bizagi > Componentes personalizados >

Leer o Escribir un archivo de Excel

Introducción

Con Bizagi es posible leer desde un archivo de Excel file (p.e para llenar una tabla en Bizagi), o así mismo escribir a un archivo de Excel (p.e crear un archivo con la información de negocio almacenada en Bizagi).

Esto se puede llevar a cabo utilizando la funcionalidad de Librería de Componentes para desarrollar su propio componente que se integre con Excel.

Para mayor información, consulte la Librería de Componentes.

 

note_pin

Crear un archivo de Excel sin la necesidad de programar también es posible a través de las opciones nativas en Bizagi que se presentan en las Plantillas de documentos.

 

¿Qué necesita hacer?

Si desea crear su propio componente con código a la medida para manejar archivos Excel, posiblemente de mayor utilidad para leer de este tipo de archivos, realice los siguientes pasos:

 

1.Cree su componente para Excel

Cree un componente que se apoye en librerías/APIs para el manejo con Excel, de manera que pueda interpretar archivos xls o xlsx.

 

2.Importe este componente hacia Bizagi

Habiendo construido el componente, regístrelo bajo la Librería de Componentes de Bizagi.

 

3.Cree una regla que consuma los métodos del componente

Cree una regla de negocio en Bizagi para su escenario correspondiente (ya sea para leer o escribir a Excel).

 

Ejemplo

El siguiente ejemplo ilustra una manera de lograr lo mencionado (nótese que no es la única manera de construir un código que contemple archivos Excel).

Este ejemplo está dirigido específicamente para un proyecto que se ejecuta en una plataforma de .NET.

La lectura o escritura de un archivo de Excel, sigue la misma estructura que la lectura o escritura de una tabla de base de datos a través de consultas SQL. Los siguientes ejemplos son implementados utilizando una solución .Net que utiliza OLE DB.

 

1.Cree su componente para Excel

El primer paso es crear un compilado (class library) que se apoye en APIs/librerías para interpretar contenido de archivos Excel.

En este ejemplo específico y dado que Bizagi maneja información en su modelo de datos a través de estructuras XML estándar, este componente está diseñado para transformar un conjunto de datos (DataSet) a una estructura XML y viceversa.

 

public string DatasetToXML(DataSet data)
{
  string xmlpath = System.IO.Path.GetTempPath() + DateTime.Now.Ticks + ".xml";
  data.WriteXml(xmlpath);
  XmlDocument xml = new XmlDocument();
  xml.Load(xmlpath);
  if (File.Exists(xmlpath)  
  {
      File.Delete(xmlpath);
  }
  return xml.InnerXml;
}  

 

Para mayor información, consulte http://www.codeproject.com/Tips/813187/Csharp-Read-and-Write-Excel-xls-and-xlsx-Files-Con (para construir su propia solución para leer y escribir un archivo de Excel u use el siguiente método para hacer la transformación de un DataSet a XML).

 

2.Importe este componente hacia Bizagi

Una vez haya compilado su solución, agregue este componente como  la librería base de su proyecto de Bizagi.

Para más información sobre los pasos involucrados para ello, consulte Integrar código .NET personalizado en Bizagi.

 

3.Cree una regla que consuma los métodos de su componente

El siguiente ejemplo ilustra el código que se utilizaría en las reglas para usar el componente de ejemplo implementado como se mencionó anteriormente.

 

3.1 Cargar datos desde un archivo de Excel a una Entidad de Bizagi

Cree una expresión con el siguiente código para guardar los datos directamente en una entidad de Bizagi.

 

// Cree una nueva instancia de la librería
var path = "..." // Agregue la ubicación de su archivo de Excel esta ubicación debe ser accesible desde Bizagi.
var excel = new SolutionNameSpace.MainClass(path); // use los parámetros necesarios de acuerdo a su solución, la solución adjunta requiere un segundo parámetro booleano con valor "true"
// Cree y ejecute el query de lectura
var query = "SELECT col1, col2, .... colN FROM [YourSheet$]" // Use '*' para llamar todas las columnas
var dsData = excel.ReadingMethod(query); // use los parámetros necesarios de acuerdo a su solución  
var xmlData = new XmlDocument();
xmlData.InnerXml = excel.DatasetToXml(dsData); // Método mencionado previamente, si está usando la solución adjunta, reemplace "excel" con ContactCenterComponentLibrary.Util.CUtil  
 
// Cargue el XML creado anteriormente en la Entidad Destino (EntityName)
var transformation = CHelper.getXSL("EntityName", "TrasformationName");
var xmlTransformed = CEntityXmlHelper.transformXmlAsString(xmlData.InnerXml,transformation);
CEntityXmlHelper.fromXmlToEntityWithScopes(Me,xmlTransformed);  

 

3.2 Cree y escriba un archivo de Excel con datos de Bizagi

Cree una expresión con el siguiente código para escribir datos de una entidad de Bizagi hacia un archivo de Excel usando una plantilla.

 

// Cree una nueva instancia de la librería
var path = "..." // Agregue la ubicación de su archivo de Excel esta ubicación debe ser accesible desde Bizagi.  
var excel = new SolutionNameSpace.MainClass(path); // use los parámetros necesarios de acuerdo a su solución, la solución adjunta requiere un segundo parámetro booleano con valor "true"  

 
// Realice las transformaciones
var xsdIn=CHelper.getXSD("EntityName","XSD_TransformationName"); // xsd para obtener datos de Bizagi
var xslIn=CHelper.getXSL("EntityName","XSL_TransformationName"); // xsl para transformar los datos de Bizagi en una estructura XML  
xmlBizagi=CEntityXmlHelper.entityToStringXmlWithScopes(Me, xsdIn, xslIn); // Genere el xml para cargar los datos en el archivo de Excel
excel.WritingMethod(xmlBizagi); //Escriba el archivo de Excel, use los parámetros necesarios de acuerdo a su solución
NewFile = Me.addRelation("RelationName"); // Genere el nuevo archivo en Bizagi
NewFile.setXPath("FileName", “FileName.xlsx”);  
NewFile.setXPath("Data", excel.GetExcelContent());

 

Para los ejemplos anteriores, tenga en cuenta lo siguiente:

 

SolutionNameSpace: el namespace de su solución.

MainClass: La clase principal de su solución.

ReadingMethod: El método implementado para leer el archivo de Excel.

WritingMethod: El método implementado para escribir el archivo de Excel.

Transformations: Para saber más sobre la transformación llamada previamente, consulte Esquemas del modelo de datos de Bizagi XML.

[YourSheet$]: Mantenga esta estructura para llamar la Hoja del archivo de Excel donde se encuentra la información, en este ejemplo, el nombre de la la hoja finalizada con '$' y entre paréntesis cuadrado.