使用VBScript从CSV文件中删除列
我需要使用VBScript删除CSV文件中的各个列 要删除的列从编号101到编号106 下面的代码不会删除任何列 帮我做这件事使用VBScript从CSV文件中删除列,csv,vbscript,multiple-columns,remove,Csv,Vbscript,Multiple Columns,Remove,我需要使用VBScript删除CSV文件中的各个列 要删除的列从编号101到编号106 下面的代码不会删除任何列 帮我做这件事 Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, strLine, dataArray, clippedArray() InputFile="C:\input.csv" OutputFile="C:\input_n_1.csv" Set fso =
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, strLine, dataArray, clippedArray()
InputFile="C:\input.csv"
OutputFile="C:\input_n_1.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
Set InFile = fso.OpenTextFile(InputFile, ForReading)
Set OutFile = fso.OpenTextFile(OutputFile, ForWriting, True)
Do While InFile.AtEndOfStream <> True
strLine = InFile.ReadLine
ReDim Preserve clippedArray(x)
clippedArray(x) = Split(strLine,";")
intCount = 0
newLine = ""
For Each Element In clippedArray(x)
If intCount <> (101 OR 102 OR 103 OR 104 OR 105 OR 106) Then
EndChar = "|"
newLine = newLine & Element & EndChar
End If
intCount = intCount + 1
Next
OutFile.WriteLine newLine
Loop
InFile.Close
OutFile.Close
WScript.Echo "Done"
Const for reading=1,for write=2,for appending=8
Dim fso、strLine、数据阵列、clippedArray()
InputFile=“C:\input.csv”
OutputFile=“C:\input\n\u 1.csv”
设置fso=CreateObject(“Scripting.FileSystemObject”)
设置infle=fso.OpenTextFile(InputFile,ForReading)
设置OutFile=fso.OpenTextFile(OutputFile,ForWriting,True)
在填充时执行。AtEndOfStream为True
strLine=infle.ReadLine
激光雷达(x)
clippedArray(x)=拆分(strLine,“;”)
整数=0
换行符=“”
对于光线中的每个元素(x)
如果intCount(101或102或103或104或105或106),则
EndChar=“|”
换行符=换行符、元素和结束字符
如果结束
intCount=intCount+1
下一个
OutFile.WriteLine换行符
环
填充,关闭
出口,关闭
Echo“完成”
循环中的代码有一些问题。例如,尝试ReDim
您的clippedArray
数组时,没有为x
指定任何值。也不需要保留
数组中的内容,因为您要在其中放置新数据
循环的内部可以简化并放入如下功能:
Function GetUpdatedLine(p_sLine)
Dim arrColumns
Dim sNewLine
Dim sEndChar
Dim iCounter
' Split line into columns
arrColumns = Split(p_sLine, ";")
' Initialize variables
sNewLine = ""
sEndChar = "|"
For iCounter = 1 To UBound(arrColumns) + 1
Select Case iCounter
Case 101, 102, 103, 104, 105, 106
' Skip these columns
Case Else
' Add to new line
If sNewLine <> "" Then sNewLine = sNewLine & sEndChar ' Add separator
sNewLine = sNewLine & arrColumns(iCounter - 1) ' arrColumns is a zero-based array
End Select
Next
GetUpdatedLine = sNewLine
End Function
函数GetUpdatedLine(p_sLine)
暗棱柱
暗淡的斯奈尔线
Dim sEndChar
暗色计数器
'将行拆分为列
arrColumns=Split(p_sLine,“;”)
'初始化变量
sNewLine=“”
sEndChar=“|”
对于iCounter=1到UBound(arrColumns)+1
选择案例i计数器
案件101、102、103、104、105、106
'跳过这些列
其他情况
'添加到新行
如果是sNewLine“”,则sNewLine=sNewLine&sEndChar'添加分隔符
sNewLine=sNewLine&arrColumns(iCounter-1)'arrColumns是一个基于零的数组
结束选择
下一个
GetUpdatedLine=sNewLine
端函数
现在可以将您的循环更新为:
Do While InFile.AtEndOfStream <> True
OutFile.WriteLine GetUpdatedLine(InFile.ReadLine)
Loop
Do While infle.AtEndOfStream True
OutFile.WriteLine GetUpdatedLine(infle.ReadLine)
环