2017-01-10 12 views
1

EPPlusライブラリを使用して、複数のデータセット/テーブルを単一のExcelワークシートにエクスポートする方法の例は見つかりません。コードを実行すると、最後に設定されたセットが返されます。私は次のコードで間違っていますか?ありがとう!複数のデータセットをEPPlusで単一のExcelワークシートにエクスポート

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() 
+0

それぞれの表を同じ場所の '.Cells(1,1)'に保存しています。テーブルを上書きしたくない場合は、それぞれ別の場所に格納する必要があります。 – Blackwood

+0

こんにちはブラックウッド、ご返信ありがとうございます。私はEPPlusの初心者であり、ライブラリに付属するほとんどの組み込み関数に慣れていません。どのようにあなたのテーブルを上書きすることを防ぐためにその行を書き直しますか? –

+0

各テーブルをどこに保存するかを決めるだけで済みます。提案については、VDWWDの回答を参照してください。 – Blackwood

答えて

2

@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 

あなたはまた、それ自身のシートにすべてのデータセットを追加することができます。

だから、このようなものでなければなりません。

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 
+0

こんにちはVDWWD、あなたの応答と指導に感謝します。私はあなたの最初の例、ws.Cells(1、cnt)を適用しようとしました。それは私に「範囲外の列」エラーを与えました。当然のことながら、この例は列に適用されます。 N個のテーブルとそれらのレコードをどのように繰り返しますか?私はLoadFromDataTableがこれに理想的かどうか分からない。 –

+0

私の答えを修正しました。整数は '0'ではなく' 1'で始めるべきです。シート内のEPPlusの最初の列はインデックス「1」を有する。しかし、すべてのDataTableが 'dSets'に含まれていればうまくいくはずです – VDWWD

関連する問題