VB.net循环保存多个Excel文件

时间:2014-08-23 18:44:32

标签: sql sql-server vb.net excel export

我使用以下代码将值写入数据表,然后将其导出到Excel。

我现在要做的是修改代码,以便为每个唯一客户保存单独的Excel文件([客户查询])

这是我的导出代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    'Initialize the objects before use
    Dim dataAdapter As New SqlClient.SqlDataAdapter()
    Dim dataSet As New DataSet
    Dim command As New SqlClient.SqlCommand
    Dim datatableMain As New System.Data.DataTable()
    Dim connection As New SqlClient.SqlConnection

    'Assign your connection string to connection object
    connection.ConnectionString = "server=inlt01\SQLEXPRESS; "
                                + "database=DaisyBilling; "
                                + "integrated security=yes"
    command.Connection = connection
    command.CommandType = CommandType.Text
    'You can use any command select
    command.CommandText = "SELECT [CustomerCLI], [Customer Lookup], " 
                        + "ROUND (SUM ([SalesPrice]),2) as [Sum of Buy Price], "
                        + "ROUND (SUM ([Sell Price]),2) as [Sum of Sell Price], "
                        + "[Tariff Lookup] FROM [DaisyBilling].[dbo].["
                        + DaisyBillingForm.TextBox1.Text
                        + "] GROUP BY [CustomerCLI], [Customer Lookup], "
                        + "[Tariff Lookup] Order by [Customer Lookup]"
    dataAdapter.SelectCommand = command

    Dim f As FolderBrowserDialog = New FolderBrowserDialog
    Try
        If f.ShowDialog() = DialogResult.OK Then
            'This section help you if your language is not English.
            System.Threading.Thread.CurrentThread.CurrentCulture = _
            System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
            Dim oExcel As Excel.Application
            Dim oBook As Excel.Workbook
            Dim oSheet As Excel.Worksheet
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add(Type.Missing)
            oSheet = oBook.Worksheets(1)

            Dim dc As System.Data.DataColumn
            Dim dr As System.Data.DataRow
            Dim colIndex As Integer = 0
            Dim rowIndex As Integer = 0

            'Fill data to datatable
            connection.Open()
            dataAdapter.Fill(datatableMain)
            connection.Close()

            'Export the Columns to excel file
            For Each dc In datatableMain.Columns
                colIndex = colIndex + 1
                oSheet.Cells(1, colIndex) = dc.ColumnName
            Next

            'Export the rows to excel file
            For Each dr In datatableMain.Rows
                rowIndex = rowIndex + 1
                colIndex = 0
                For Each dc In datatableMain.Columns
                    colIndex = colIndex + 1
                    oSheet.Cells(rowIndex + 1, colIndex) = 
                      dr(dc.ColumnName).ToString()
                Next
            Next

            'Set final path

            Dim fileName As String = "\" + DaisyBillingForm.TextBox1.Text + "_"
                                   + DateTime.Now.ToString("ddMMyyyy") & "_"
                                   & DateTime.Now.ToString("HHmmss") + ".xls"
            Dim finalPath = f.SelectedPath + fileName
            'TextBox1.Text = finalPath
            oSheet.Columns.AutoFit()

            'Save file in final path
            oBook.SaveAs(finalPath, XlFileFormat.xlWorkbookNormal,
                         Type.Missing, _ Type.Missing, Type.Missing, 
                         Type.Missing, XlSaveAsAccessMode.xlExclusive, 
                         _ Type.Missing, Type.Missing, Type.Missing,
                         Type.Missing, Type.Missing)

            'Release the objects
            ReleaseObject(oSheet)
            oBook.Close(False, Type.Missing, Type.Missing)
            ReleaseObject(oBook)
            oExcel.Quit()
            ReleaseObject(oExcel)
            'Some time Office application does not quit after automation: 
            'so i am calling GC.Collect method.
            GC.Collect()

            MessageBox.Show("Export done successfully!")

        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Warning", MessageBoxButtons.OK)
    End Try
End Sub

如何为每个唯一客户创建一个循环并运行此代码,并为每个客户保存一个单独的文件?

我对VB比较新,任何帮助都非常感激。

谢谢,

0 个答案:

没有答案