方法使用Excel Interop导出时键入错误

时间:2014-06-02 19:29:09

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

我正在编写一个使用Microsoft.Office.Interop.Excel程序集将数据导出到Excel电子表格的应用程序。

但是,当我执行导出时 - 出现以下错误:

“方法的类型签名不是互操作兼容的”

这是我的代码。

Imports System.Data.SqlClient
Imports System.Data
Imports System.IO.Directory
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop

Public Class ViewBillForm

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

    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

    connection.ConnectionString = "server=xxx\SQLEXPRESS; database=xxx; integrated security=yes"
    command.Connection = connection
    command.CommandType = CommandType.Text
    command.CommandText = "Select * from [dbo].[xxx]"
    dataAdapter.SelectCommand = command

    Dim f As FolderBrowserDialog = New FolderBrowserDialog
    Try
        If f.ShowDialog() = DialogResult.OK Then

            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

            connection.Open()
            dataAdapter.Fill(datatableMain)
            connection.Close()

            For Each dc In datatableMain.Columns
                colIndex = colIndex + 1
                oSheet.Cells(1, colIndex) = dc.ColumnName
            Next

            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)
                Next
            Next

            Dim fileName As String = "\Export" + ".xls"
            Dim finalPath = f.SelectedPath + fileName
            Textbox1.Text = finalPath
            oSheet.Columns.AutoFit()

            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)

            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

Private Sub ReleaseObject(ByVal o As Object)
    Try
        While (System.Runtime.InteropServices.Marshal.ReleaseComObject(o) > 0)
        End While
    Catch
    Finally
        o = Nothing
    End Try

End Sub
End Class

任何人都可以帮我解决我的错误吗?

谢谢,

0 个答案:

没有答案