2

如何使用 ssis 将一组 xls 文件转换为制表符分隔的文件?

在 google 搜索中获得了执行此操作的脚本。请向我建议如何使用 ssis 实现此目的

    Dim objFSO, objFile, objFileTSV
    Dim strLine, strNewLine, strNewText
    Dim FileNameLength, LineLength, NewFileName, Linepos, Quote, QuoteCount, TotalFilesConverted

    objFSO = CreateObject("scripting.filesystemobject")
    strCurPath = objFSO.GetAbsolutePathName(".")
    TotalFilesConverted = 0

    For Each objFile In objFSO.getfolder(strCurPath).Files
        If UCase(Right(objFile.Name, 4)) = ".CSV" Then
            FileNameLength = Len(objFile.Name) - 4
            NewFileName = Left(objFile.Name, FileNameLength) & ".tsv"
            objFile = objFSO.OpenTextFile(objFile, 1)

            Do Until objFile.AtEndOfStream
                strLine = objFile.ReadLine
                LineLength = Len(strLine)
                Linepos = 1
                strNewLine = ""
                Quote = False
                QuoteCount = 0

                Do While Linepos <= LineLength
                    If Mid(strLine, Linepos, 1) = "," And Not Quote Then
                        strNewLine = strNewLine + vbTab
                        Quote = False
                    ElseIf Mid(strLine, Linepos, 1) = Chr(34) Then
                        QuoteCount = QuoteCount + 1
                        If QuoteCount = 2 And Linepos <> LineLength Then
                            If Mid(strLine, Linepos, 2) = Chr(34) & Chr(34) Then
                                strNewLine = strNewLine + Chr(34)
                                Linepos = Linepos + 1
                                Quote = True
                                QuoteCount = 1
                            Else
                                Quote = False
                                QuoteCount = 0
                            End If
                        Else
                            Quote = True
                        End If
                    Else
                        strNewLine = strNewLine + Mid(strLine, Linepos, 1)
                    End If
                    Linepos = Linepos + 1
                Loop
                strNewText = strNewText & strNewLine & vbCrLf
            Loop
            objFile.Close()

            objFileTSV = objFSO.CreateTextFile(NewFileName)
            objFileTSV.WriteLine(strNewText)
            TotalFilesConverted = TotalFilesConverted + 1
            strNewText = ""
            objFileTSV.Close()

        End If
    Next

    MsgBox(CStr(TotalFilesConverted) + " Files Converted from CSV to TSV.")

据了解,这可以在脚本任务中使用..但让我有一些线索

4

1 回答 1

0

假设不涉及数据转换,最简单的方法是创建具有 Excel 源和平面文件目标的数据流任务。您应该在平面文件连接管理器中将 Column Delimiter 字段设置为“Tab {t}”。

由于您的输入中有多个 Excel 文件,您可以使用 Foreach 循环对每个文件执行上述过程。

于 2013-08-22T02:00:47.603 回答