从SQL Server Management Studio复制到Excel会连接列。

38

我试图将Mgmt Studio的查询结果复制粘贴到Excel中,但在粘贴到Excel后,Mgmt Studio中的列会被合并成单个列。

这并没有发生在我的任何同事身上,我们也找不到任何更改此设置的选项。有什么想法吗?


从结果到网格还是从结果到文本?您到底突出了什么,并且按了Ctrl + C键或右键单击并使用上下文菜单项? - Aaron Bertrand
将结果输出到网格和文本都会产生相同的行为。我尝试了几种突出显示方式(点击左上角选择全部,点击单元格然后键入ctrl-a)。我使用ctrl+c和右键复制两种方法进行复制。我用ctrl+v和右键粘贴进行粘贴。 - Great Kindness
嗯,我不确定,我不记得曾经遇到过这个问题。你尝试过查看此问题在最新版本的Management Studio (SQL Server 2012)中是否也存在吗?对我来说,至少对于现代版本的Excel,它不会表现出这种行为。你使用的是哪个版本的Excel? - Aaron Bertrand
你是指2013年的版本吗?我无法复制管理工作室2012中的结果并粘贴到Excel 2013中来重现这个问题。 - Aaron Bertrand
哎呀,我的意思是 Excel 2010。奇怪的是,我的同事现在也遇到了同样的问题。他说今天早上他没有这个问题,现在却有了。真疯狂!现在我们两个都快被搞疯了。:-) - Great Kindness
6个回答

72

这是Excel的一个问题。

在把结果粘贴到Excel中后,选择“数据”选项并选择“文本分列”。然后点击“分隔符”并确保下一个窗口中选中了“制表符”。

这将把数据转换成列。而且,Excel会记住这些设置,所以下次就可以正确地粘贴。


4
我理解了。我重新启动了Excel并尝试了一下,这次成功了。我的同事也是这样做的。我想Excel没有将制表符作为分隔符解释。感谢您的帮助。 - Great Kindness
我前几天使用了“文本分列”功能来分割其他一些数据。我没有意识到它已经“持久化”了设置(我通常不怎么使用该功能),而且我也没有预料到它会在粘贴到 Excel 中时产生影响,而且不需要任何交互。但是我们每天都能学到新东西。感谢你的指点。 - grasmi
2
请注意,如果查询结果中有 XML 列,它似乎会影响此操作。必须移除该列才能使其正常工作。 - Brett Postin

6
我有完全相同的问题。昨天它能够正常工作,但今天它只是把所有内容作为文本粘贴到第一列中。以前,从管理工作室列自动粘贴到Excel列中。
这是Excel的问题。它会记住上次在Excel中使用该函数时的文本转列选项,并在下次自动应用它们。
你确实可以再次使用文本转列功能,选择选项卡作为分隔符。然后这个选项会被记住并存储在Excel中。现在,如果你再次从管理工作室复制并粘贴,它将按预期展开到各列中。
看起来这是Excel试图帮助你但最终变得有点烦人的情况之一 :)

2
尝试帮助但搞砸了的技术术语是“hepping”。Excel非常有用。 - greg

2
我已经在我的SSMSBoost插件中解决了这个问题:它有将网格导出为本地OpenXMLSpreadsheet的可能性,这可以被Excel轻松“理解”。作为解决您问题的“奖励”,您还将看到即使数据类型也得到了保留,因此不再存在将日期转换为文本或将文本转换为数字的问题... 看看吧。

谢谢分享这个提示,它对我很有用。在安装了这个软件社区版(http://www.ssmsboost.com)之后,我能够通过使用之前无法工作的相同命令(右键单击结果网格左上角并选择选项“复制”或“带标题复制”)正确地将数据导出到Excel中。 - Marcos Buarque
请勿下载SSMSBoost。自2021年4月以来,他们已停止更新该产品,并没有与我们用户进行任何沟通。SSMSBoost的作者Andrei Rantsevich无处可寻,无论是在Stackoverflow、Facebook还是他们自己的主页上都找不到他的踪迹。(虽然该产品非常好) - Nurp

0
我也遇到过这个问题,以前我会关闭Excel。后来我意识到每天我都会对特定的电子表格进行文本分列,并将分隔符更改为其他字符“/”。当我将其改回制表符时,它就正常工作了。

0
我遇到了同样的问题,与那段代码有关。
SELECT ID,LastSuccessfullyTransferTime   FROM GP_TRANSFER_LOGS

我使用了那段代码,问题解决了。
SELECT ID,FORMAT(LastSuccessfullyTransferTime,'dd.MM.yyyy HH:MM') TransferTime FROM GP_TRANSFER_LOGS

-2

我遇到了同样的问题。我使用以下解决方案将我的结果保存为CSV:

  1. 执行查询
  2. 在结果网格的左上角右键单击
  3. 选择“另存为结果”
  4. 选择csv格式,完成!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接