0

我想创建一个应用程序,我可以在其中将所需的 gridview 结果导出到一个新的 excel 文件中。如果同名文件已经存在,那么它将要求提供一个新名称,否则它将创建新文件。

4

2 回答 2

0

试试这个

Private Sub ButtonExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles ButtonExport.Click
    Dim rowsTotal, colsTotal As Short
    Dim I, j, iC As Short
    System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
    Dim xlApp As New Excel.Application
    Try
        Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add
        Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
        xlApp.Visible = True
        rowsTotal = DataGridView1.RowCount - 1
        colsTotal = DataGridView1.Columns.Count - 1
        With excelWorksheet
            .Cells.Select()
            .Cells.Delete()
            For iC = 0 To colsTotal
                .Cells(1, iC + 1).Value = DataGridView1.Columns(iC).HeaderText
            Next
            For I = 0 To rowsTotal - 1
                For j = 0 To colsTotal
                    .Cells(I + 2, j + 1).value = DataGrid1.Rows(I).Cells(j).Value
                Next j
            Next I
            .Rows("1:1").Font.FontStyle = "Bold"
            .Rows("1:1").Font.Size = 10
            .Cells.Columns.AutoFit()
            .Cells.Select()
            .Cells.EntireColumn.AutoFit()
            .Cells(1, 1).Select()
        End With
    Catch ex As Exception
        MsgBox("Export Excel Error " & ex.Message)
    Finally
        'RELEASE ALLOACTED RESOURCES
        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
        xlApp = Nothing
    End Try
End Sub
于 2013-05-13T10:11:24.943 回答
0

我不会推荐 Rachel Gallens 解决方案——它确实有效,但它存在很多问题:它使用互操作——一种非常慢、容易出错且在服务器场景中不可能实现的技术。此外,Interop 界面很容易使用 10 年 - 当您遇到高级问题时,您最终会处理一个复杂且没有充分记录的迷宫。

我建议使用 EPPLUS:它是一个免费库,可以动态创建 xlsx 文件,而且速度非常快。正如您在此处看到的:您所要做的只是一行代码: Export DataTable to excel with EPPlus

于 2013-05-13T10:13:59.157 回答