用VBS实现文本数据的行列转换

最近手头上的一项工作需要将批量的文本数据实现行列转换,虽然利用excel可以实现,但还是嫌之太过麻烦(网上找了些实现类似功能的vba脚本都没能顺利运行起来),最后只得自己动手写了一个vbs脚本来实现此项功能。抛砖引玉一下。

手头的原始数据是如下格式的

A,1
B,2
C,3
D,4
E,5

转换后的格式为

A,B,C,D,E
1,2,3,4,5

代码如下(请新建一个1.txt文本并将原始数据复制保存到1.txt,将下面的代码另存为.vbs文件并将文件和1.txt置于同一目录下运行即可查看转换后的文本2.txt)

 

 

Set objFSO = CreateObject("Scripting.FileSystemObject")

'读入原始数据文件1.txt的内容

Set objFile = objFSO.OpenTextFile("1.txt")

 

'将数据按行分割成数组

a = Split(objFile.ReadAll,vbCrlf)

'获取原始数据文件的行数作为二维数组的行

X =  UBound(a)

'将每一行的数据按照“,”号分割,并获取分割后的数组下标作为二维数组的列

Y = UBound(Split(a(0),","))

'Wscript.Echo Y

 

'定义二维数组并写入数据

Redim Z(X,Y)

for i = 0 to X

b = split(a(i),",")

'Wscript.Echo a(i)

for j = 0 to Y

'Wscript.Echo b(j)

z(i,j) = b(j)

next 

next

 

 

 

'创建2.txt用于写入转换完成的数据

Set objFile = objFSO.CreateTextFile("2.txt")

 

'将二维数组转换成字符串形式,每一行之间用"#"号隔开

For j = 0 to Y

 

For i = 0 to X

s = s&","&z(i,j)

Next

s = s & "#"

'Wscript.Echo s

Next

 

'将字符串按照"#"号分割成一维数组

s = split(s,"#")

 

'将数组逐段读取转成字符串,写入2.txt

For i = 0 to UBound(s) - 1 

t = s(i)

slen = len(t)

 

'Wscript.Echo s(i)

t  = right(t,slen-1)

'Wscript.Echo t

objFile.WriteLine t

Next

 

 

 

评论

发表新评论

此内容将保密,不会被其他人看见。