我有多个从数据库查询生成的csv文件
\ n用于下面的文字
中的新行字符收到格式 -
Month1.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,User2,2012,11 \ n
此处col1,Col2和Col3在每个CSV中相同但行序列不相同。
我将所有这些CSV放在同一个文件夹中所需的格式csv与不同名称的ID,User,Year,Month1,Month2,Month3,...,MonthN,其中数据可用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机器上执行它而无需任何额外的软件。任何人都可以帮助我
答案 0 :(得分:0)
使用filesystems对象打开每个CSV并忽略第一行迭代它们。
然后您可以使用“,”作为分隔符使用拆分。
如果您需要比较前3个字段并仅输出唯一项,那么您可以使用字典对象。一旦你的sting被拆分,将所有3个字段添加到一个字符串中,检查它是否在你的字典对象中,如果没有写出来并添加到字典中。如果它被忽略并继续。
希望有所帮助
答案 1 :(得分: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