Bonjour,
Dans le cadre d'un projet perso, je dois afficher, modifier et sauvegarder des fichiers Excel dans une base de données.
Le problème est (en plus d'être sur un clavier qwerty que je découvre et sur lequel je ne sais pas faire les accents) que l'on souhaite que l'utilisateur puisse faire un copier/coller de son fichier sur une interface, pour ensuite travailler sur le site.
Donc pas d'import de CSV et aucun contrôle de ce qui rentre dans l'interface.
J'ai passe un peu de temps avec HandsOnTable, qui me permet de faire le copier/coller sur l'interface, puis de sauvegarder les données en base. J'ai essaye de déstructurer le fichier en entrée, j'ai donc une table avec les entêtes et une table avec les données.
La table avec les entêtes contient un id unique, l'identifiant du fichier source, la valeur de l'entête, le numéro de colonne et si ce champ fait partie d'une catégorie de champs obligatoires.
La table des données contient un lien vers l'id entête pour savoir dans quelle colonne se trouve la valeur, ainsi que la valeur dans le fichier source.
Bon, j'ai un peu galéré a mettre tout ca en place mais ca fonctionne.
Mes questions sont :
- quelle serait la meilleure façon de procéder pour répondre a cette problématique. J'ai vraiment l'impression que je suis parti pour me prendre la tête avec la déstructuration, et je me demandais si je n'irais pas plus vite a créer une table par fichier (il n'y a que quelques centaines de lignes max par fichier, donc pas de soucis pour les index etc.), voire une seule table avec une centaine de colonnes qui stockerait juste le fichier brut.
- l'utilisation de ces fichiers en base sera assez basique au début : sauvegarder des données, remplir des champs manquants grâce a des appels lances par des batches, projection sur des quantités etc.
Je ne peux absolument pas imposer un format en entrée, tout au plus je peux forcer l'utilisateur a m'indiquer quels sont les champs obligatoires (j'ai par exemple toujours besoin d'une quantité, donc j'ai créé une table de mots clés associes a une catégorie et je demande a ce qu'au moins une colonne du fichier ait pour entête "qty" ou "qte" ou "quantity" etc. (c'est paramétrable en bdd et ca fonctionne déjà), par exemple :
QUANTITY : qty, qte, quantity etc.
PRODUCT NAME : name, product, etc.
En écrivant la question, je me dis que sauvegarder le fichier brut dans une table "en vrac", le charger dans une table construite a la volée si l'utilisateur souhaite travailler dessus, et faire l'opération inverse a la sauvegarde semble bien plus simple que de ne travailler qu'avec "l'état de l'art" d'une structure universelle mais qui risque d'être très galère a faire évoluer et a maintenir.
Merci pour vos avis !