cancel
Showing results for 
Search instead for 
Did you mean: 

Usar condiciones en Excel

Juan_PabloAlvar
Level 3
Buenas tardes!

Necesito extraer ciertos datos de columnas de Excel. Por ejemplo, de la Columna 1 necesito extraer los valores iguales o mayores a 10, volcarlos en un CSV y de la Columna 2 extraer los valores iguales a 1 y volcarlos tambien en el mismo CVS. Ya llegué a la parte en la que extraigo los datos desde el archivo xlsx de origen pero no logro identificar como filtrar esos datos y poder escribirlos en el archivo CSV.
Espero haber sido claro...

Gracias!

------------------------------
Juan Pablo Alvarez Piñero
------------------------------
1 BEST ANSWER

Best Answers

Hola Juan,

NOTE: TRANSLATED USING GOOGLE TRANSLATE

Esto se puede lograr fácilmente utilizando las acciones listas para usar de Blue Prism. Lo que debe hacer es leer todos los datos de Excel en una colección utilizando la acción 'Obtener colección como hoja de cálculo' de 'MS Excel' VBO. Una vez que haya tenido la colección, use la acción 'Colección de filtros' y obtenga los datos deseados mediante una consulta de filtro como: "[Columna Un nombre] > = 1 Y [Columna Dos nombre] > 10"

Nota : reemplace los nombres de columna con los nombres de columna como se ve en la colección.


El resultado de la acción anterior le devolverá una colección filtrada, ahora si desea tener solo unas pocas columnas en lugar de los datos completos, puede usar la acción 'Dividir colección' de 'Utilidad - Manipulación de colecciones' VBO donde debe definir dos plantillas de colección que tengan una sola fila en blanco donde cada plantilla tendrá las columnas que desee y las columnas que quedan junto con la colección filtrada que usted recién recibido de la última acción.

Supongamos que tengo una colección con columnas: A, B, C, D y E y digamos que solo necesito una colección con A y D. Entonces puedo tener una plantilla de colección con columnas A y D y otra con B, C y E. Como salida de esta colección obtendrás dos colecciones divididas entre las cuales una sería la colección deseada.


Para escribir los datos en un archivo CSV, simplemente puede usar la acción 'Obtener colección como CSV' de la acción 'Utilidad - Cadenas' que convertirá la colección pasada en una cadena CSV y luego puede usar la acción 'Escribir archivo de texto' desde 'Utilidad - Administración de archivos' VBO y pasar la cadena CSV que desea escribir en la ruta del archivo CSV proporcionada.


Háganos saber si eso ayuda o si tiene alguna duda.

------------------------------
----------------------------------
Espero que te ayude y si resuelve tu consulta por favor márcala como la mejor respuesta para que otros que tengan el mismo problema puedan rastrear la respuesta fácilmente

Regards,
Devneet Mohanty
Intelligent Process Automation Consultant | Sr. Consultant - Automation Developer,
Wonderbotz India Pvt. Ltd.
Blue Prism Community MVP | Blue Prism 7x Certified Professional
Website: https://devneet.github.io/
Email: devneetmohanty07@gmail.com

----------------------------------
------------------------------


Hope it helps you out and if my solution resolves your query, then please mark it as the best answer

Regards,
Devneet Mohanty
Intelligent Process Automation Consultant | Technical Business Analyst,
WonderBotz India Pvt. Ltd.
Blue Prism Community MVP | Blue Prism 7x Certified Professional
Website: https://devneet.github.io/
Email: devneetmohanty07@gmail.com

----------------------------------

View answer in original post

11 REPLIES 11

PabloSarabia
Level 11
Buenas!

Si ya tienes cargada la Excel en una collection, filtrarlo es facil, usa la acción "Filter Collection" que se encuentra en el Business Object "Utility - Collection Manipulation". Esto te dará como Output otra colección filtrada.

Para crear CSV... Te paso un fragmento de código que te puede ayudar


      using(StreamWriter writer = new StreamWriter(FileName, true))
      {
            //CABECERAS
            foreach(DataColumn cols in dt.Columns)
            {
                  writer.Write(cols.ColumnName.ToString() + ";");
            }
            writer.WriteLine();


            // DATOS
            foreach(DataRow row in dt.Rows)
            {
                  for(int i = 0; i<dt.Columns.Count; i++)
                  {
                        writer.Write(row.ToString() + ";");
                  }
                  writer.WriteLine();
            }
      }


Espero que esto te ayude

Saludos 🙂

------------------------------
Pablo Sarabia
Architect
Altamira Assets Management
Madrid
634726270
------------------------------

Gracias por responder Pablo!

1) Entendí clarísimo lo de la Colección filrada, mi problema es como decirle que es lo que debe filtrar (Columna 1 >= 10 y Columna 2 = 1)
2) No logro comprender del todo el código para crear el CSV. Hay una forma mas simple de trabajar con un CSV sin usar código? Luego de filtrar la coleccion se puede usar la Acción "Import to CSV"?

Gracias nuevamente!



------------------------------
Juan Pablo Alvarez Piñero
------------------------------

Buenas,

La opción de Import CSV de la MS Excel VBO es para importarlo CSV a un fichero Excel si no recuerdo mal.

Te aclaro rapidamente el código, que lo puse sin especificar nada:

Primeramente, create un objeto nuevo si no tienes uno ya, y en la hoja "Initialise" pon esta configuración:

(Añadir la librería System.IO.dll a las referencias y cambiar el language a C#)

20861.png
Luego, pon un code stage y tienes que declarar los siguientes inputs:

20862.png

- dt -> indica aqui tu colección ya filtrada
- FileName -> indica aqui donde quieres que se guarde el fichero CSV que crees nuevo


No sé si con esto te aclaro mas las ideas


Un saludo 🙂


------------------------------
Pablo Sarabia
Architect
Altamira Assets Management
Madrid
634726270
------------------------------

Gracias por responder!

No sé si estoy usando bien el Process Studio, adjunto screen de como lo tengo actualmente...

20865.png
El Proceso cuyo nombre es "Challenge Persiscal" es el entorno en donde estoy trabajando y el Objeto "C#" es el que creé para aplicar lo que me indicaste del código. Eso está bien?
Por otro lado, no tengo la librería que mencionas en el comentario anterior (System.IO.dll), de donde puedo descargarla?
Para ponerte en contexto, hice una entrevista para trabajar como RPA Developer (tengo experiencia pero en otra plataforma) y me enviaron así sin más este challenge para ver como me desenvolvía. El tema es que BP es bastante diferente a la plataforma que estoy acostumbrado a usar...

Gracias!


------------------------------
Juan Pablo Alvarez Piñero
------------------------------

Buenas!

Vale, breves aclaraciones:
- Todo lo que tenga que ver con codigo, lo tienes que poner desde el Object Studio
- La libreria System.IO.dll existe ya por defecto, no hay que tocar nada, simplemente añadir la referencia

¿Te da algún error cuando añades esas referencias al Initialise? De ser así, abria que revisar el fallo que te da.

Una vez tengas eso, pasamos con lo del codigo

- En el Busines Object que tienes ahí, C#, añade una nueva hoja (En la cinta de arriba, clic derecho, "New")
- Cambiale el nombre a algo representativo, por ejemplo "Export to CSV"
- Por hacer mas reutilizable, yo he añadido en el "Start", los siguientes Inputs (Esto es como darle argumentos a una función en un lenguaje de programación clásico). Le paso la colección donde tengo los datos y la ruta del fichero donde quiero que me guarde el CSV.
20870.png
- Seguidamente añado un Code Stage y lo uno todo
20871.png
- Abre la parte del código, tendrás que añadirle los inputs que te comenté en el segundo mensaje, y en la pestaña de "Code" pega el fragmento de codigo que te indiqué en la primera respuesta.

- Guarda y revisa que no tengas errores (Arriba deberia aparecer "(0) Errors"

- Publica la acción para poder usarla desde el Proceso que tienes arriba. Para esto, clic derecho en el nombre de la hoja y Publish.

Y con esto solo te queda llamarlo desde el propio proceso Challenge Persiscal, para ello, añade un Action Stage. Busca el business object que se llame C# y selecciona la Action que hemos creado antes. ya solo falta que indiques los valores de colección y donde quieres que se guarde.


Espero que esto te ayude y pases la prueba 🙂 Y si te ha ayudado esto, no te olvides de marcarme la respuesta como "best answer"


Cualquier cosa nos dices

Saludos 🙂




------------------------------
Pablo Sarabia
Architect
Altamira Assets Management
Madrid
634726270
------------------------------

Hola Juan,

NOTE: TRANSLATED USING GOOGLE TRANSLATE

Esto se puede lograr fácilmente utilizando las acciones listas para usar de Blue Prism. Lo que debe hacer es leer todos los datos de Excel en una colección utilizando la acción 'Obtener colección como hoja de cálculo' de 'MS Excel' VBO. Una vez que haya tenido la colección, use la acción 'Colección de filtros' y obtenga los datos deseados mediante una consulta de filtro como: "[Columna Un nombre] > = 1 Y [Columna Dos nombre] > 10"

Nota : reemplace los nombres de columna con los nombres de columna como se ve en la colección.


El resultado de la acción anterior le devolverá una colección filtrada, ahora si desea tener solo unas pocas columnas en lugar de los datos completos, puede usar la acción 'Dividir colección' de 'Utilidad - Manipulación de colecciones' VBO donde debe definir dos plantillas de colección que tengan una sola fila en blanco donde cada plantilla tendrá las columnas que desee y las columnas que quedan junto con la colección filtrada que usted recién recibido de la última acción.

Supongamos que tengo una colección con columnas: A, B, C, D y E y digamos que solo necesito una colección con A y D. Entonces puedo tener una plantilla de colección con columnas A y D y otra con B, C y E. Como salida de esta colección obtendrás dos colecciones divididas entre las cuales una sería la colección deseada.


Para escribir los datos en un archivo CSV, simplemente puede usar la acción 'Obtener colección como CSV' de la acción 'Utilidad - Cadenas' que convertirá la colección pasada en una cadena CSV y luego puede usar la acción 'Escribir archivo de texto' desde 'Utilidad - Administración de archivos' VBO y pasar la cadena CSV que desea escribir en la ruta del archivo CSV proporcionada.


Háganos saber si eso ayuda o si tiene alguna duda.

------------------------------
----------------------------------
Espero que te ayude y si resuelve tu consulta por favor márcala como la mejor respuesta para que otros que tengan el mismo problema puedan rastrear la respuesta fácilmente

Regards,
Devneet Mohanty
Intelligent Process Automation Consultant | Sr. Consultant - Automation Developer,
Wonderbotz India Pvt. Ltd.
Blue Prism Community MVP | Blue Prism 7x Certified Professional
Website: https://devneet.github.io/
Email: devneetmohanty07@gmail.com

----------------------------------
------------------------------


Hope it helps you out and if my solution resolves your query, then please mark it as the best answer

Regards,
Devneet Mohanty
Intelligent Process Automation Consultant | Technical Business Analyst,
WonderBotz India Pvt. Ltd.
Blue Prism Community MVP | Blue Prism 7x Certified Professional
Website: https://devneet.github.io/
Email: devneetmohanty07@gmail.com

----------------------------------

Gracias Devneet, me has sido de muchísima ayuda.

El proceso genera perfecto la colección filtrada y la escribe en el archivo CSV deseado. Ahora solo me queda solucionar un inconveniente que es el siguiente: cuando quiero adjuntar el archivo en la sección Attachment de la Acción "Send Message" ya que me dice que "Los campos están definidos pero no se pueden alinear con la colección entrante..."

Adjunto screen del error y de como tengo armado el proceso.

Gracias!20879.png



------------------------------
Juan Pablo Alvarez Piñero
------------------------------

Hola Juan,

NOTE: TRANSLATED USING GOOGLE TRANSLATE

Me alegra ver que su problema se ha resuelto finalmente. Este problema debe venir debido a la definición incorrecta de la colección.

Para que la acción 'Enviar mensaje' funcione correctamente con los archivos adjuntos, debe tener una colección con una columna denominada 'Ruta'. Antes
Con esta acción, le sugiero que agregue una nueva fila a esta colección y, a continuación, simplemente utilice una etapa de cálculo para establecer la ruta del archivo
de su archivo CSV en esta fila recién agregada.

Consulte también la documentación a continuación para esta acción que indica lo mismo. Espero que su problema se solucione con este 🙂

20882.png

------------------------------
----------------------------------
Hope it helps you and if it resolves you query please mark it as the best answer so that others having the same problem can track the answer easily

Regards,
Devneet Mohanty
Intelligent Process Automation Consultant | Sr. Consultant - Automation Developer,
Wonderbotz India Pvt. Ltd.
Blue Prism Community MVP | Blue Prism 7x Certified Professional
Website: https://devneet.github.io/
Email: devneetmohanty07@gmail.com

----------------------------------
------------------------------


Hope it helps you out and if my solution resolves your query, then please mark it as the best answer

Regards,
Devneet Mohanty
Intelligent Process Automation Consultant | Technical Business Analyst,
WonderBotz India Pvt. Ltd.
Blue Prism Community MVP | Blue Prism 7x Certified Professional
Website: https://devneet.github.io/
Email: devneetmohanty07@gmail.com

----------------------------------

Hola Devneet,

Gracias por responder.

El problema es que en las propiedades de la Acción "Send Message" no me figura el campo "Path" y no me permite agregarlo. Te adjunto screenshot de como está actualmente.

20884.png

------------------------------
Juan Pablo Alvarez Piñero
------------------------------