1

我有多个从数据库查询生成的 csv 文件

\n 用于下面文本中的换行符

收到格式-

月1.csv

ID,User,Year,Month1, Month2,Month3,...,MonthN \n 2,User2,2012,12 \n 1,User1,2011,5 \n 4,User5,2014,56 \n 3,User4, 2013,34 \n

Month2.csv ID,User,Year,Month1, Month2,Month3,...,MonthN \n 1,User1,2011,10 \n 2,User2,2012,66 \n 3,User4,2013,40 \n 4 ,User5,2014,26 \n

Month3.csv ID,User,Year,Month1, Month2,Month3,...,MonthN \n 4,User5,2014,67 \n 1,User1,2011,12 \n 3,User4,2013,23 \n 2 ,用户2,2012,11 \n

这里 col1,Col2 和 Col3 在每个 CSV 中是相同的,但行顺序不一样。

我将所有这些 CSV 文件放在一个文件夹中,并将所需格式的 csv 放在同一个文件夹中,名称不同,ID、用户、年、月 1、月 2、月 3、...、月 N 中的数据可用 col1(ID)、Col2(用户)和Col3(年)

我想创建特定格式的 CSV 文件,如下所示 -

所需格式 - ID,User,Year,Month1, Month2,Month3,...,MonthN \n 1,User1,2011,5,10,12,...,50 \n 2,User2,2012,12,66 ,11,...,12 \n 3,User4,2013,34,40,23,...,13 \n 4,User5,2014,56,26,67,...,52 \n

我想要 VBS 中的解决方案,这样我们就可以在任何 Windows 机器上执行它,而无需任何额外的软件。谁能帮我解决这个问题

4

2 回答 2

0

使用 filesystems 对象打开每个 CSV 并遍历它们,忽略第一行。

然后,您可以使用“,”作为分隔符来使用拆分。

如果您需要比较前 3 个字段并且只输出唯一项目,那么您可以使用字典对象。一旦您的刺痛被拆分,将所有 3 个字段添加到一个字符串中,检查它是否在您的字典对象中,如果不写出来并添加到字典中。如果是忽略并继续。

希望有帮助

于 2013-04-16T15:29:16.867 回答
0

将第一个 CSV 复制到所需的新文件名。从彼此的 CSV 中读取内容并将其拆分为vbLf. 跳过数组的第一个字段(包含标题)并将其余部分附加到目标 CSV。有点像这样:

Set fso = CreateObject("Scripting.FileSystemObject")

isFirst = True
For Each f In fso.GetFolder("C:\folder").Files
  If isFirst Then
    f.Copy "AllMonths.csv"
    isFirst = False
  Else
    Set csv = fso.OpenTextFile("AllMonths.csv", 8)
    lines = Split(f.OpenAsTextStream.ReadAll, vbLf)
    For i = 1 To UBound(lines)
      csv.Write lines(i) & vbLf
    Next
    csv.Close
  End If
Next
于 2013-04-16T18:42:12.557 回答