【问题标题】:Prevent Excel from adding commas characters to CSV file防止 Excel 将逗号字符添加到 CSV 文件
【发布时间】:2018-06-25 06:23:50
【问题描述】:

我尝试在 VBS 中编写一个打开 CSV 文件的脚本,对数据进行一些更改并保存。我遇到的问题是我有以下格式的数据:

数据1,数据2, 数据3,数据4,数据5,数据6,

保存操作后(即使我没有更改文件内容)VBS 在离线行结束时添加了额外的逗号字符,文件如下所示:

数据1,数据2,,, 数据3,数据4,数据5,数据6,

它完成了缺少的(对他而言)逗号。不幸的是,我有一个程序无法正确读取此类 CSV。

有什么方法可以防止 VBS 添加这些额外的逗号吗? 如果没有,您知道如何从行尾删除额外的逗号吗?

【问题讨论】:

  • 发生这种情况是因为您的第二行有 4 个数据单元格。您的第一行有两个数据单元格,这意味着第 1 行中有两列缺失值。Excel 将添加逗号。是的,您可以逐行写入 CSV,不包括这些逗号。你的 VB 代码是什么样的?
  • 在这里查看各种答案:stackoverflow.com/q/769621/4961700
  • 嗨,JvdV,我现在无法粘贴此代码。但我可以说,当我不修改任何数据时也会发生这种情况,只使用 obj save 和 obj close。
  • @user3461823,看看这里:stackoverflow.com/questions/35037327/…
  • CSV(逗号分隔值)是表格数据的文本表示,表格列之间用逗号(或其他分隔符)分隔。 CSV 中的每一行都有相同数量的分隔符和缺失值的空字段是很自然的。

标签: excel csv vbscript


【解决方案1】:

输出数据的格式是完全有效的 CSV(Excel 导出的格式)。如果您的目标程序无法处理,您可能需要在将导出的数据输入程序之前对其进行后处理,例如用正则表达式替换:

filename = "C:\path\to\your.csv"

Set fso = CreateObject("Scripting.FileSystemObject")

Set re = New RegExp
re.Pattern   = ",+$"
re.Global    = True
re.Multiline = True

txt = fso.OpenTextFile(filename).ReadAll
fso.OpenTextFile(filename, 2).Write re.Replace(txt, ",")

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 2019-04-05
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多