web-dev-qa-db-fra.com

Copier / coller des données de SQL Server vers Excel diviser le texte en plusieurs colonnes?

J'ai un problème lors du collage des données de la grille de résultats de SQL Server 2005 vers un tableur Excel 2007.

J'ai une requête dans SQL Server qui renvoie 2 colonnes (une colonne de nombre et une colonne de texte)

Ici, sur un ordinateur, je peux copier (clic droit> copier), puis cliquer avec le bouton droit de la souris et le coller dans une feuille de calcul Excel. aucun problème.

Sur un autre ordinateur, lorsque j’essaie de coller dans Excel, il scinde la colonne de texte et le colle en plusieurs colonnes en fonction des espaces entre les mots.

Par exemple, si l'une des lignes contient ...

Collez moi s'il vous plait

... dans celui-ci, lors du collage dans Excel, il divise le texte et colle chaque mot dans une colonne distincte d'Excel.

Nous avons essayé de comparer les options de SQL Server et d'Excel avec l'ordinateur sur lequel tout fonctionne correctement, mais aucune différence ne peut être constatée.

Toutes les idées sont les bienvenues

Merci

13
Paul

Si vous avez récemment utilisé Texte pour colonnes, il appliquera ces paramètres à l’opération Coller. Je ne me souviens pas de cela avant Excel 2007, mais c'est peut-être le cas. Je dois toujours revenir en arrière et le redéfinir sur délimité par des tabulations avant de recommencer à copier et coller.

16
Justin Moore

Avant de coller les résultats: Données → Texte en colonnes

  • Type de données d'origine: Vérification Délimitée
  • Suivant
  • Délimiteurs: décocher espace
  • Suivant
  • Terminer

Enfin, collez les résultats.

6
Hector Negrete

Avez-vous essayé de remplacer les modèles de démarrage Excel sur l'ordinateur présentant le problème? Une macro peut être définie et déclenchée par votre opération de collage. Selon l'Article 924460 de la Base de connaissances Microsoft, les modèles sont stockés aux emplacements suivants:

Par défaut, les fichiers de modèles utilisateur sont stockés à l'emplacement suivant:

  • Sous Windows XP C:\Documents and Settings \\ Données d'application\Microsoft\Modèles
  • Sous Windows Vista ou Windows 7 C:\Utilisateurs \\ AppData\Roaming\Microsoft\Templates
1
user87883

J'ai constaté que si je quitte Excel, puis que je le redémarre et que je recharge ma feuille de calcul, les options texte en colonnes sont effacées, de sorte que le collage fonctionne à nouveau comme prévu.

La réponse d'Hector est bien en ce sens que vous n'avez pas à quitter Excel, mais cela fonctionne aussi, et c'est assez rapide et facile.

1
Gundark

Si votre table contient un champ nvarchar (max), déplacez-le au bas de la table. Si le type de champ est différent de nvarchar (max), identifiez le ou les champs incriminés et utilisez la même technique. Sauvegarde le. Resélectionnez la table en SQL. Si vous ne parvenez pas à enregistrer sans modification, vous pouvez désactiver temporairement les avertissements correspondants dans Outils | OPTIONS Cette méthode ne comporte aucun risque. Copiez et collez l'affichage SQL GRID avec des en-têtes vers Excel. Les données peuvent toujours présenter un retour à la ligne, mais au moins vos données se trouvent toutes sur la même ligne. Sélectionnez ensuite tous les enregistrements de ligne et effectuez un tri personnalisé sur la colonne ID. Tous vos enregistrements doivent maintenant être intacts et consécutifs.

0
XGIS

Une situation similaire que je rencontre de temps en temps est que des lignes sont divisées en plusieurs lignes lorsque les utilisateurs ont utilisé un caractère retour à la ligne/saut de ligne dans une colonne destinée aux commentaires. J'ai trouvé une solution qui fonctionne pour SQL 2012/2014 ici .

Ce n'est apparemment pas un problème dans les versions précédentes de SQL Server. Si vous ne souhaitez pas utiliser le lien, voici comment résoudre le problème dans votre code SQL:

REPLACE(REPLACE([YourColumnHere], CHAR(10), ''), CHAR(13), '')
0
fujiiface

Solution à ce problème dans Excel après avoir collé l'option de clic.

"Utiliser l'assistant d'importation de texte" -> Délimité -> Contrôle suivant "Onglet", cochez la case "Traiter le délimètre consécutif comme un" -> Suivant

0
Adil