0

内で、UpdatePanelにバインドし、ListViewその内容を Excel にエクスポートしようとしています。これらの関数は独立して正常に動作します (私の [レポートの実行] ボタンは をバインドしListView、[Excel にエクスポート] ボタンは EPPlus を使用して .xlsx ファイルをエクスポートします)。.xlsx エクスポートを機能させるには<Triggers> Postback、[Excel にエクスポート] ボタンを作成する必要がありました。

「Excel にエクスポート」ボタンListViewで .xlsx をバインドしてエクスポートする必要があります。export メソッドにをバインドするメソッドを追加しましたListViewが、スキップしているようです。PostBack の一部を理解していないと思います。

は次の<Trigger>とおりです。

<Triggers>
    <asp:PostBackTrigger ControlID="export" />
</Triggers>

ListViewバインドは次のとおりです。

public void runreport(object sender, EventArgs e)
{
    reportlv.DataSource = null;
    reportlv.DataBind();
    bindreportlv();
    elreportdiv.Visible = true;
}

以下は、runreport メソッドが埋め込まれたエクスポート メソッドです。

protected void export_Click(object sender, EventArgs e)
{
    runreport(null, null);

    ExcelPackage pck = new ExcelPackage();
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("worksheet");

    DataTable dt = new DataTable();

    dt.Columns.Add(new DataColumn("Date", typeof(string)));
    dt.Columns.Add(new DataColumn("Payee", typeof(string)));
    dt.Columns.Add(new DataColumn("Amount", typeof(string)));

    foreach (ListViewDataItem li in reportlv.Items)
    {
        if (li.ItemType == ListViewItemType.DataItem)
        {
            DataRow dr = dt.NewRow();
            dr["Date"] = ((Label)li.FindControl("lbldate")).Text.ToString();
            dr["Payee"] = ((Label)li.FindControl("lblpayee")).Text.ToString();
            dr["Amount"] = ((Label)li.FindControl("lblamt")).Text.ToString();
            dt.Rows.Add(dr);
        }
    }

    ws.Cells["A1"].LoadFromDataTable(dt, true);
    pck.SaveAs(Response.OutputStream);
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;  filename=summary.xlsx");
    Response.Flush();
    Response.End();
}

ボタンは次のとおりです。

<asp:Button runat="server" ID="run" OnClick="runreport" CssClass="button" Text="Run Report" />
<asp:Button runat="server" ID="export" OnClick="export_Click" CssClass="button" Text="Export to Excel" />

アップデート

Page_Load メソッドは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        runreport(null, null);
    }
}
4

1 に答える 1