【问题标题】:Change .xls to .csv without losing columns将 .xls 更改为 .csv 而不会丢失列
【发布时间】:2015-04-20 03:43:47
【问题描述】:

我有一个包含大约 400 个 .txt 文件的文件夹,我需要将它们转换为 .csv。当我将它们批量重命名为 .csv 时,所有列都会被合并为一个。当我转换为 .xls 然后转换为 .csv 时,也会发生同样的事情,即使 .xls 中的列很好。如果我打开 .xls 文件并另存为 .csv,那很好,但这需要打开所有 400 个文件。

我正在从 mac 终端使用 sed。导航到终端中包含文件的文件夹后,这里有一些不起作用的代码:

对于 *.csv 中的文件;做 sed 's/[[:blank:]]+/,/g'

对于 *.csv 中的文件;执行 sed -e "s/ /,/g"

对于 *.csv 中的文件; do s/[[:space:]]/,/g

对于 *.csv 中的文件;做 sed 's/[[:space:]]{1,}/,/g'

任何关于如何将列结构恢复到 csv 文件的建议将不胜感激。这可能已经很明显了,但我是一个编码新手,所以请放轻松。谢谢!

编辑:这里是 xls 列的外观示例,以及它们在 csv 格式中的外观:

Dotsc.exe   2/12/15 1:17 PM 0   Nothing 1   Practice

此处用空格分隔的所有内容(除了 7 和 PM 之间的空格)都由文件中的列分隔。这是我将批处理重命名为 .csv 时的样子:

Dotsc.exe 2/12/15 1:17 PM 0 无 1 练习

列现在变成了空格,所有数据都在同一列中。希望能澄清一些事情。

【问题讨论】:

  • 显示输入文件中的一些示例行。
  • 不知道该怎么做,所以它会在我看来是怎样的,但想象一个典型的 Excel 文件,其中列分隔数据。 csv 文件包含所有数据,除了一列中的所有数据,因此不是用列分隔数据,而是用单个空格分隔数据。我认为我需要做的是用逗号替换这些空格,尽管我可能是错的。
  • “不知道该怎么做,所以你会觉得它对我来说是怎样的” 选择一些示例行并将它们复制并粘贴到问题中。然后用鼠标选择它们并选择代码{}。这将按字面意思格式化它们。
  • 告诉我们您发布的代码以何种方式“不起作用”。它是核心转储、产生语法错误、输出错误、没有输出还是其他什么?您列出的sed 命令不会将它们的输出写回原始文件,因为您没有给它们-i 选项,这可能是它们“不起作用”的方式吗?
  • 约翰,感谢您的帮助,我刚刚编辑了这篇文章,希望能让它更清楚。 Ed,从绝对没有发生任何事情的意义上说,它不起作用。一个“>”作为终端的下一行出现,文件保持不变。还尝试了 *.csv 中的文件;执行 sed -i "s/ /,/g" 得到相同的结果。

标签: csv sed terminal multiple-columns xls


【解决方案1】:

我认为您尝试仅批量执行的操作是不可能的。我建议你在 Java 中使用一些库。

看这里:http://poi.apache.org/spreadsheet/

【讨论】:

  • 过去我确实有一个程序员为我做这件事,所以我知道这是可能的。
  • 这听起来绝对是微不足道的,无法想象为什么你会认为这是不可能的。我们只需要查看一些示例输入和预期输出,以便我们可以为作业提供正确的脚本。
  • 好吧,也许我解释得不好。我的意思是,您当然可以更改文件名,但您必须使用 excel 打开该文件,因为无法使用普通编辑器。所以我相信你想这样做。造成误会请见谅
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多