comment créer des dynamiques des feuilles de calcul excel basé sur les données de la table
Donnée d'une table dans SQL Server qui détient des données consolidées à partir de trois sources de tables, y compris une colonne appelée BUREAU qui différencie les enregistrements les uns des autres.
Les trois sources de tables qui contiennent des données à partir de trois bureaux.
Je veux créer un fichier Excel de façon dynamique qui aura 3 feuilles dans un classeur basé sur les trois bureaux différents (ex. office1, office2, office3) résultant dans chaque feuille de calcul contenant les données pertinentes en fonction de son bureau.
S'il vous plaît recommander une approche dynamique Excel destination dans SSIS comme je ne veux pas utiliser une approche qui crée un fichier de modèle, puis copier ce modèle à destination du fichier excel.
vérifiez le forum ci-dessous qui vous aidera à codeproject.com/Articles/301542/...
OriginalL'auteur Gurpreet Singh | 2013-03-26
Vous devez vous connecter pour publier un commentaire.
Tout ce qui peut être accompli à l'aide d'un scipt tâche et C#, une solution plus simple est démontrée à
http://www.rafael-salas.com/2006/12/import-header-line-tables-_116683388696570741.html
et le suivi
http://www.rafael-salas.com/2008/03/ssis-and-dynamic-excel-destinations_01.html#!
Mais pour résumer les détails pertinents, vous devez utiliser un " Execute SQL Tâche de créer dynamiquement de la feuille lors de l'exécution avant de l'utiliser comme destination.
Créer une nouvelle variable pour contenir le nom de la Feuille et de définir cette variable à l'Office, vous travaillez comme vous le parcourir.
Aussi, créer une variable pour contenir l'instruction Create table qui permettra de créer de chaque feuille.
Par exemple,
"CREATE TABLE
"+ @[User::SheetName] + "
(HeaderID
ENTIER,HeaderName
DE TYPE NVARCHAR(50),LineID
ENTIER,LineName
DE TYPE NVARCHAR(50),LineDetails
DE TYPE NVARCHAR(50))"et Définir la SQLSourceType Propriété de la tâche d'Exécution SQL à l'intérieur de la Pour Chaque conteneur de Variables et sélectionnez la Variable que vous avez créé pour contenir l'instruction create.
Dans le Composant de Destination Excel, Modifier le mode d'accès aux données de ‘Nom de la Table ou de la Vue Nom de la Variable " et choisissez le nom de la feuille, de la variable créée à partir de la variable de la liste déroulante.
cliquez droit sur votre espace de travail et sélectionnez "Variables" dans le menu contextuel. Dans le coin supérieur gauche est une icône qui onMouseOver montrera bulle "Ajouter une Variable". Cliquez dessus et wallah!
OriginalL'auteur Thronk
J'ai plusieurs packages SSIS qui remplissent une fonction similaire. Un seul fichier Excel est composé de plusieurs feuilles de calcul avec chaque feuille de calcul peuplée par des résultats à partir d'une autre requête SQL. Voici les étapes générales j'ai appliqué. Avant de commencer, assurez-vous de créer un gestionnaire de connexion pour la base de données doit être appliquée et la sortie fichier Excel.
1) Créer une tâche de Script dans le Contrôle de flux et de le remplir comme suit. Ici, je suis entrain de créer le fichier Excel avec les feuilles de calcul qu'il contiendra. (Les feuilles de calcul ne doit jamais contenir d'espaces ou de caractères spéciaux). Mon code ci-dessous est en C#.
2) Créer dans votre base de données de deux tables qui vont être remplis de façon temporaire. C'est, une table sera remplie pour les résultats de la première feuille de calcul et la seconde table sera remplie pour les résultats de la deuxième feuille. C'est une bonne technique de nommage de faire précéder le nom de chaque table avec "Working_", de sorte que vous savez le but de chacun. J'ai pris l'approche de l'utilisation des tables au lieu de vues est parce que j'ai envie de tri (ORDER BY) mes résultats, qui ne peut être fait avec un point de vue.
3) Ajouter le package SSIS deux Tâches d'Exécution SQL sous le Contrôle de Flux. La première tâche sera exécutée une INSERTION instruction SQL qui remplira le premier tableau que vous venez de créer et la deuxième tâche sera exécutée une autre INSÉREZ une instruction SQL qui va peupler le deuxième tableau venez de créer.
4) Ajouter le package SSIS deux tâches de Flux de Données sous le Contrôle de Flux. La première sera pour le remplissage de la première feuille de calcul et le second pour le remplissage de la deuxième feuille de calcul.
5) Sélectionnez la première tâche de Flux de Données et d'y ajouter des sous Flux de Données OLE DB Source où vous pourrez définir le fournisseur OLE DB conenction (gestionnaire de votre base de données), puis de la table ou de la vue. Sélectionnez la première nouvelle table créée. Assurez-vous que toutes les colonnes d'intérêt sont sélectionnés et que vous pouvez effectuer un aperçu.
6) Ajouter une Conversion de Données de la tâche de flux, puis une Destination Excel tâche de flux.
7) Répétez les étapes 5 et 6 pour la deuxième feuille de calcul et tableau.
8) Enfin, en vertu de Contrôle de Flux d'ajouter un fichier Excel Tâche SQL qui permet de supprimer le contenu des deux tables de Travail. Vous ne voulez pas que l'ancien contenu à inclure la prochaine fois que le paquet est exécuté.
Maintenant, si vous voulez jouer avec le formatage du fichier Excel après qu'il est terminé et impressionner votre manager, vous pouvez aussi le faire dans le code avec une finale de l'équipe de Script (également à l'aide de C#). La belle partie de cette approche est que vous n'êtes pas avoir à appliquer une mise en forme particulière des fonctions SQL, Excel est en train de faire tout le travail. On pourrait inclure la mise en forme à l'Étape 1 et dès que vous copiez les données dans les étapes suivantes, il est automatiquement mis en forme. Comme avec n'importe quel rapport de sortie, il n'y a pas de point dans la prise de SQL effectuer la mise en forme suit (en ajoutant des supplémentaires de travail pour le serveur de base de données) lorsqu'il est plus efficace de laisser Excel ou SSRS faire ce qu'ils font de mieux.
Et c'est à ce sujet. Notez que juste pour les besoins de cet exemple, je suis coder en dur le nom de fichier. Mais dans mon code je fais une demande à un Utilisateur de la variable qui est ensuite complétée par une autre instruction SQL tirant sur le nom d'une autre table de base de données. Pour les meilleures pratiques, c'est une bonne idée de garder vos packages SSIS entièrement de la table. De cette façon, les modifications apportées aux noms et les emplacements sont réalisés dans une table de base de données dans un dossier spécifique de votre package SSIS... en évitant la nécessité de mettre à jour votre package SSIS et de passer par le dev d'assurance de la qualité pour la production cycle de vie de nouveau.
Espère que cette aide et s'il vous plaît laissez-moi savoir si vous avez des questions.
OriginalL'auteur