使用 EPPlus 将多个数据集导出到单个 Excel 工作表

Exporting multiple datasets to single Excel worksheet with EPPlus

我找不到有关如何使用 EPPlus 库将多个数据 sets/tables 导出到单个 Excel 工作表的示例。当我 运行 代码时,它 returns 一组恰好是最后一组。以下代码我做错了什么?谢谢!

Dim dSets as DataSets
Dim dGrid as DataGrid
Dim dTable as DataTable
Dim sheet as String
sheet = "DumpSets"
Dim attachment as String
attachment = "attachment; filename=" + sheet + ".xlsx"
Dim xlPack as ExcelPackage = New ExcelPackage()
Dim ws as ExcelWorksheet = xlPack.Workbook.Worksheets.Add(sheet)
Response.Clear()
Response.AddHeader("content-disposition", attachment)
Response.Charset = ""

For each dTable in dSets.Tables
    dGrid = New DataGrid
    Me.EnableViewState = False

    dGrid.DataSource = dTable
    ws.Cells(1, 1).LoadFromDataTable(dGrid.DataSource, True)

    dGrid.DataBind()
Next

Response.BinaryWrite(xlPack.GetAsByteArray())
Response.End()

正如@Blackwood 已经提到的,您总是在同一个地方添加数据。

所以它应该是这样的:

Dim cnt As Integer = 1

For each dTable in dSets.Tables
    dGrid = New DataGrid
    Me.EnableViewState = False

    dGrid.DataSource = dTable
    ws.Cells(1, cnt).LoadFromDataTable(dGrid.DataSource, True)

    dGrid.DataBind()

    cnt = (cnt + 1)
Next

您还可以将每个数据集添加到它自己的 sheet。

Dim cnt As Integer = 1
For Each dt As DataTable In dSets.Tables
    Dim ws As ExcelWorksheet = xlPack.Workbook.Worksheets.Add(("Sheet " + cnt))
    ws.Cells(1, 1).LoadFromDataTable(dGrid.DataSource, True)
    cnt = (cnt + 1)
Next