Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将datagridview标题列导出到excel vb 2012_Vb.net_Excel_Datagridview - Fatal编程技术网

Vb.net 将datagridview标题列导出到excel vb 2012

Vb.net 将datagridview标题列导出到excel vb 2012,vb.net,excel,datagridview,Vb.net,Excel,Datagridview,我正在使用visual studio 2012和microsoft SQL server 2012使用以下代码将datagridview导出到excel: 公共类出口 Private Sub Export_Load(sender As Object, e As EventArgs) Handles MyBase.Load DataGridView1.AllowUserToAddRows = False ClassKoneksi.namadatabase = "K

我正在使用visual studio 2012和microsoft SQL server 2012使用以下代码将datagridview导出到excel:

公共类出口

 Private Sub Export_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        DataGridView1.AllowUserToAddRows = False
        ClassKoneksi.namadatabase = "KPIRWAN"
        Dim dssiswa As New DataSet
        Dim sql As String
        sql = "select*from Siswa order by NIS ASC"
        dssiswa = ClassSiswa.displayData(ClassSiswa.opencon, sql, "DataSiswa")
        DataGridView1.DataSource = dssiswa
        DataGridView1.DataMember = "DataSiswa"
        DataGridView1.ReadOnly = True
        ClassSiswa.closecon()
    End Sub
    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)

            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally

            GC.Collect()

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

    Private Sub ExportExcel()
        Dim xlApp As Microsoft.Office.Interop.Excel.Application
        Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
        Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim oValue As Object = System.Reflection.Missing.Value
        Dim sPath As String = String.Empty
        Dim dlgSave As New SaveFileDialog
        dlgSave.DefaultExt = "xls"
        dlgSave.Filter = "Microsoft Excel|*.xls"
        dlgSave.InitialDirectory = Application.StartupPath

        If dlgSave.ShowDialog = Windows.Forms.DialogResult.OK Then
            Try
                xlApp = New Microsoft.Office.Interop.Excel.Application
                xlBook = xlApp.Workbooks.Add(oValue)
                xlSheet = xlBook.Worksheets("sheet1")

                Dim xlRow As Long = 2
                Dim xlCol As Short = 1

                For k As Integer = 0 To DataGridView1.ColumnCount - 1
                    xlSheet.Cells(1, xlCol) = DataGridView1(k, 0).Value
                    xlCol += 1

                Next

                For k As Integer = 0 To DataGridView1.ColumnCount - 1
                    xlSheet.Cells(2, xlCol) = DataGridView1(k, 0).Value
                    xlCol += 1

                Next

                For i As Integer = 0 To DataGridView1.RowCount - 1
                    xlCol = 1

                    For k As Integer = 0 To DataGridView1.ColumnCount - 1
                        xlSheet.Cells(xlRow, xlCol) = DataGridView1(k, i).Value
                        xlCol += 1

                    Next

                    xlRow += 1

                Next

                xlSheet.Columns.AutoFit()
                Dim sFileName As String = Replace(dlgSave.FileName, ".xlsx", "xlx")

                xlSheet.SaveAs(sFileName)
                xlBook.Close()
                xlApp.Quit()

                releaseObject(xlApp)
                releaseObject(xlBook)
                releaseObject(xlSheet)

                MsgBox("Data successfully exported.", MsgBoxStyle.Information, "PRMS/SOB Date Tagging")
            Catch
                MsgBox(ErrorToString)
            Finally
            End Try
        End If
    End Sub
End Class
它工作得非常好,除了我将datagridview导出到excel时,datagridview中的列标题文本不会导出到excel工作表,只有gridview


如何进行编码以将列标题文本获取到excel工作表

我认为您必须从每个专栏中获取标题文本,如下所示:

xlSheet.Cellsx,y.Value=DataGridView1.Columnsk.HeaderText

你可以把这个放在你的k循环中。然后把它写在文件中你想写的任何地方。x和y必须是写入头的位置,可能由k决定

编辑:在excel的第一行中写入标题

For k As Integer = 0 To DataGridView1.ColumnCount - 1
    xlSheet.Cells(1,k+1).Value = DataGridView1.Columns(k).HeaderText
Next

我将DataGridView1.Columnsk.HeaderText放入k循环中,如下所示:对于k As Integer=0的DataGridView1.Columnsk.HeaderText,出现一个消息框,表示从字符串到整型的转换名称无效。这不太正确。您希望使用循环导航到要写入标题的单元格。请看我的编辑:一旦你到了那里,如何写作。x和y代表什么?程序说需要声明。@RikiSalim x和y必须是您写入头的位置,可能由k决定。基本上,它们将是要写入标题的单元格行和列。查看我的编辑。我尝试了编码,但标题文本仍然没有显示在excel上。