将制表符分隔的结果复制粘贴到Excel文件中。

3

我编写了一个脚本,从LDAP数据库获取数据并将其写入文件中,每个值在一行中用制表符分隔。然后我尝试将该文件的内容复制并粘贴到Excel中,但它会将每个“列”的制表符分隔内容都放在该行的第一列中,而不是将每个数据列放在Excel文件中自己的行中。行可以正常粘贴。 例如,我们来看这个模拟的第一行。

12121212 [] lastname,  firstname [] title [] phone [] manager

[] = 我尝试通过编程方式在我的数据输出中插入制表符

这让我感到困惑,因为我特意制作了一个函数来从我的LDAP搜索结果中删除换行符,并将制表符添加到该列的数据返回末尾。这是addTab函数:

function addTab {
    res='           ' # res = "\t\tx"
    echo $1 | tr -d '\n'
    echo "$res" | tr -d '\n'

这是我如何调用函数的方式(注意,$i来自我用循环迭代对UID数组进行搜索):

addTab `getattrVal $i employeeNumber`
addTab `getattrVal $i employeeType`
addTab `getattrVal $i ou`
addTab `getattrVal $i managerEmployeeNumber`

这里是getattrVal函数的代码:

function getattrVale {
    /opt/bin/ldapsearch -QLLLZZH ldap://${VIP}:389/ -b $1 $2 | grep "$2:" |awk '{ print $2 }'

我甚至尝试使用 column 命令生成漂亮的输出列(即 column -t bashCreatedTabFile.txt),但我仍然无法按预期在 Excel 电子表格中粘贴内容。

我意识到可能有更好的方法来完成这个任务,但我认为理解为什么这样做不起作用对我的进步很重要。


如果我理解你的问题..不是的。我只是将stdout写入一个文件,然后打开该文件,复制文件的内容并粘贴到Excel文件中。所以我的假设是我应该将所有内容与包含的制表符一起复制。但是看起来制表符只是空格。 - H-man
1
它将每一列的所有内容放置在该行的第一列中。我会在帖子中更新一个例子。 - H-man
“od -xc bashCreatedTabFile.txt”这个命令会显示预期位置的制表符和换行符吗?此外,如果你尝试导入文本文件(而不是剪切和粘贴),它是否能正确地检测列分隔符?你也可以尝试将内容粘贴到一个新的文本文件中,然后看看是否显示正确(你使用的是Windows操作系统吗?也许剪切和粘贴操作将制表符转换为空格了?) - Wayne Vosberg
我在使用od -xc file命令时不太确定自己看到了什么,但我猜想肯定不对。无法将输出粘贴在这个评论中。 - H-man
2个回答

3

我曾经遇到过同样的问题。虽然这不是最好的解决方案,但确实有效。

将你的分隔符更改为逗号 (,)。像平常一样复制文本并粘贴到Excel中。它可能仍然只有一列。选中该列,在Excel中转到数据 > 文本到列。

确保数据类型为"分隔符",并选择逗号作为分隔符。我不确定为什么,但似乎使用制表符不起作用。

http://www.wikihow.com/Copy-Paste-Tab-Delimited-Text-Into-Excel


0
尝试使用表格的HTML输出来做这个。
就像使用 <table> 和其他标签一样。
print(tabulate(table, headers, tablefmt="html"))

<table>
<tbody>
<tr><th>item  </th><th style="text-align: right;">  qty</th></tr>
<tr><td>spam  </td><td style="text-align: right;">   42</td></tr>
<tr><td>eggs  </td><td style="text-align: right;">  451</td></tr>
<tr><td>bacon </td><td style="text-align: right;">    0</td></tr>
</tbody>
</table>

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