【问题标题】:converting ; delimited CSV to tab delimited CSV转换;分隔 CSV 到制表符分隔 CSV
【发布时间】:2016-05-23 15:07:19
【问题描述】:

我想将;-delimited CSV 转换为 tab-delimited CSV。我尝试了一些选择。我可以将其转换为制表符分隔的文本文件,但我需要制表符分隔的 CSV 文件作为输出。我需要一个 VBScript 代码。

我尝试了以下代码,但它可以转换为制表符分隔的文本文件,但我想要制表符分隔的 CSV 文件

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile : Set objFile = objFSO.OpenTextFile("\\vss22\Export\List\Export_File.csv")
Dim objOut : Set objOut = objFSO.CreateTextFile("\\vss22\Export\List\Export_File.txt")

arrData = objFile.ReadAll
objOut.Write Replace(Replace(arrData, ";",vbTab), chr(34), "")
objFile.Close
objOut.Close

编辑:这是我的输入文件示例。我使用了@ansgar提供的代码,但是分号(;)没有被tab替换。

PIM ID;父产品;维护;MCH
 1;10001;10001;ABC
 2;20001;20001;ABC
 3;30001;30001;ABC

输出文件是

PIM ID;父产品;维护;MCH
 11000110001ABC
 22000120001ABC
 33000130001ABC

这是我正在使用的代码:

file = "\\vwq2702\HeilerExport\TaskList\Archive\List Values.csv"

Set fso = CreateObject("Scripting.FileSystemObject")

txt = fso.OpenTextFile(file).ReadAll
fso.OpenTextFile(file, 2).Write Replace(Replace(txt, ";", vbTab), Chr(34), "")

【问题讨论】:

  • ...CreateTextFile(...Export_File.txt")。嗯 - 为什么这会创建 .txt 而不是 .csv
  • @Stephan 即使我从 Export_File.txt 更改为 Export_File.txt ,它仍然会创建一个制表符分隔的文本文件
  • 显示您用于修改文件的实际代码。我的代码不太可能删除一些分号但保留其他分号。此外,我刚刚使用您的示例数据测试了我的代码,并且代码完全按照它应该做的事情。还要检查输入文件的编码。

标签: csv vbscript


【解决方案1】:

只需将修改后的文本写回原文件即可(读取文件后必须关闭才能打开写入):

file = "\\vss22\Export\List\Export_File.csv"

Set fso = CreateObject("Scripting.FileSystemObject")

txt = fso.OpenTextFile(file).ReadAll
fso.OpenTextFile(file, 2).Write Replace(Replace(txt, ";", vbTab), Chr(34), "")

【讨论】:

  • 对不起,它不起作用。分号 (;) 已被删除,但所有列中的数据彼此相邻,没有任何空格/制表符。
  • @adit 我测试了我发布的代码,它工作得很好。请提供证据。
  • 我已经提供了我得到的代码、输入文件示例和输出结果。请看一下,让我知道我错过了什么。
  • @adit 你检查文件的编码了吗?这是我唯一能想到的。请使用十六进制编辑器(例如HxD)打开它,然后从输入文件中发布前两行的十六进制表示。
猜你喜欢
  • 2013-06-11
  • 1970-01-01
  • 2013-10-15
  • 2020-11-24
  • 2021-07-21
  • 2021-10-25
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
相关资源
最近更新 更多