我想创建一个应用程序,我可以在其中将所需的 gridview 结果导出到一个新的 excel 文件中。如果同名文件已经存在,那么它将要求提供一个新名称,否则它将创建新文件。
问问题
3811 次
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 回答