从 SQL 任务导出到 Excel

Export to Excel from SQL task

我需要从 Sybase 数据库中提取信息并将其放入 Excel 文件中。由于此提取使用子查询,我正在使用 SQL 任务来提取信息并将其放入变量(数据类型 = 对象)。所以,我需要从变量中获取数据并将其保存到 Excel 文件中。这是我到目前为止所拥有的:

解决方法如下:

然后编辑脚本,在main函数中添加如下代码:


Public Sub Main()
        '
        ' Add your code here
        '

        Dim varExcelApplication As Object
        Dim varExcelBook As Object
        Dim varExcelSheet As Object
        Dim varNumeroFila As Integer
        Dim varNumeroColumna As Integer
        Dim varResults As DataSet
        Dim varRow As DataRow
        Dim varColumn As DataColumn

        Try
            ' Crea la instancia de Excel
            varExcelApplication = CreateObject("Excel.Application")
            varExcelBook = varExcelApplication.Workbooks.Add()
            varExcelSheet = varExcelBook.ActiveSheet
            varExcelApplication.Visible = False
            varExcelApplication.DisplayAlerts = False

            ' Carga los resultados del query
            varResults = CType(Dts.Variables("varRecordSetEstimaciones").Value, DataSet)

            For Each varTabla As DataTable In varResults.Tables
                varNumeroFila = 1
                For Each varRow In varTabla.Rows
                    varNumeroColumna = 1
                    For Each varColumn In varTabla.Columns
                        ' Añade la cabecera para la primera fila
                        If varNumeroFila = 1 Then
                            varExcelSheet.Cells(1, varNumeroColumna) = varColumn.ColumnName.ToString
                        End If
                        varExcelSheet.Cells(varNumeroFila + 1, varNumeroColumna) = varRow(varColumn.Ordinal).ToString
                        varNumeroColumna = varNumeroColumna + 1
                    Next
                    varNumeroFila = varNumeroFila + 1
                Next
            Next

            ' Guarda el archivo
            varExcelBook.SaveAs(Dts.Variables("varPath").Value.ToString & "\Estimaciones.xlsx")
            varExcelApplication.Workbooks.Close()
            varExcelApplication.Quit()

            Dts.TaskResult = ScriptResults.Success
        Catch ex As Exception
            MsgBox(ex.Message)
            Dts.TaskResult = ScriptResults.Failure
        End Try

    End Sub