Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexle 12-19-2019 07:09 AM
Après plusieurs questions posées autour de ce sujet, voici un rapide tutorial pour extraire les couleurs de fonds des cellules d'un classeur Excel.
Cette fonctionnalité n'étant pas disponible nativement dans Designer, nous utiliserons un peu de code Python pour cette opération.
Pourquoi vouloir extraire la couleur de fond des cellules d'une feuille Excel ?
Tout simplement car il s'agit bien souvent d'une information importante, au même titre que la valeur contenue dans la cellule.
Nous utilisons ici la librairie openpyxl de Python. Pour installer cette librairie (non contenue par défaut), il faut suivre la procédure écrite disponible ici.
Visuel du fichier Excel d'exemple et du workflow :
Voici le code:
from ayx import Alteryx
import pandas as pd
import numpy as np
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl import styles
#Load the data from Alteryx WF (Excel Path)
df=Alteryx.read("#1")
# Load the Excel sheet
excelfile = df.get_value(0,"ExcelFile")
wb = load_workbook(filename=excelfile)
#Load the active sheet, if needed load another sheet based on the name
#(https://openpyxl.readthedocs.io/en/stable/tutorial.html)
ws = wb.active
#Get row and column count
row_count = ws.max_row
col_count = ws.max_column
#Create the array to store the cell color
result_array = np.full((row_count,col_count),'', dtype=object)
#Initialize some variables
i=0
j=0
#Iterate through worksheet and print cell contents in hex
#If needed convert it to RGB inside python or into Alteryx with a formula
for row in ws.iter_rows():
for cell in row:
result_array[i,j]=cell.fill.start_color.index
j+=1
if(j==10):j=0
i+=1
#Create the result dataframe to pass to Alteryx
df = pd.DataFrame(result_array)
#Send the dataframe
Alteryx.write(df,1)
Ne pas oublier de positionner le fichier d'exemple "Test.xlsx" dans un réperoire et de modifier le chemin dans l'outil input data.
Ce code peut ensuite être personalisé pour extraire la fonte, les valeurs des cellules,...
I get this error below, do you know why? It has something to do with this line of code: "excelfile = df.get_value(0,"ExcelFile")
wb = load_workbook(filename=excelfile)"
--------------------------------------------------------------------------------------
Merci pour ta question @abell_dt ! Je suis sûre qu’elle aidera d’autres utilisateurs.
Comme ce forum est en langue française, je t'invite à écrire de préférence en français. Si tu préfères l’anglais, aucun problème, tu peux poster ta question sur le Forum anglais.
Merci à toi !
PS : Si la réponse de @WilliamR t'a aidé, n'hésites pas à l'"Accepter comme solution".
I am running into the error below. All seems to be correct with the file name, the file and the text file contents. Can you give me any insight?
Any assistance greatly appreciated