Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Listview导出到Excel(疑难解答)_C#_Asp.net - Fatal编程技术网

C# 将Listview导出到Excel(疑难解答)

C# 将Listview导出到Excel(疑难解答),c#,asp.net,C#,Asp.net,我正在开发一个web应用程序,需要能够将listview导出到Excel。listview已绑定(我可以看到数据),但下面的导出功能不起作用。该功能似乎在和上跳闸。有人知道解决这个问题的方法吗 public void ExportIntoExcel(ListView lvExport, string Header, string FileName) { try { System.Web.HttpContext.Current.Response.Clear();

我正在开发一个web应用程序,需要能够将listview导出到Excel。listview已绑定(我可以看到数据),但下面的导出功能不起作用。该功能似乎在
上跳闸。有人知道解决这个问题的方法吗

public void ExportIntoExcel(ListView lvExport, string Header, string FileName)
{
    try
    {
        System.Web.HttpContext.Current.Response.Clear();
        System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + FileName + ".xls");
        System.Web.HttpContext.Current.Response.Charset = "";
        System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter stringWrite = new StringWriter();
        stringWrite.Write(Header);
        stringWrite.WriteLine();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
        HtmlForm frm = new HtmlForm();
        lvExport.Parent.Controls.Add(frm);
        frm.Controls.Add(lvExport);
        frm.RenderControl(htmlWrite);
        System.Web.HttpContext.Current.Response.Write(stringWrite.ToString());
    }
    catch (Exception ex)
    {
    }
    finally
    {
        System.Web.HttpContext.Current.Response.End();
    }
}

protected void export_Click(object sender, EventArgs e)
{
    if (paidlv.Visible == true)
    {
        ExportIntoExcel(paidlv, "Income Summary", "incomesummary");
    }
}
更新: 这是完整的列表视图,您可以看到
s
s

<asp:ListView ID="paidlv" runat="server" OnPagePropertiesChanged="paidlv_PagePropertiesChanged" OnDataBound="paidlv_DataBound" OnSorting="paidlv_Sorting" Visible="true">
<LayoutTemplate>
    <table class="detail">
        <tr>
            <th>
                <asp:LinkButton ID="lnkdate" runat="server" CommandName="Sort" CommandArgument="pmtpaydate1">Date</asp:LinkButton>
                <asp:Image runat="server" ID="SortRevImage5" ImageUrl="~/img/arrows.png" Visible="false" />
            </th>
            <th>
                <asp:LinkButton ID="lnktname" runat="server" CommandName="Sort" CommandArgument="tname">Transaction Name</asp:LinkButton>
                <asp:Image runat="server" ID="SortRevImage2" ImageUrl="~/img/arrows.png" Visible="false" />
            </th>
            <th>
                <asp:LinkButton ID="lnkcname" runat="server" CommandName="Sort" CommandArgument="cname">Client Name</asp:LinkButton>
                <asp:Image runat="server" ID="SortRevImage1" ImageUrl="~/img/arrows.png" Visible="false" />
            </th>
            <th>
                <asp:LinkButton ID="lnkhalf" runat="server" CommandName="Sort" CommandArgument="pmtdesc1">Portion</asp:LinkButton>
                <asp:Image runat="server" ID="SortRevImage3" ImageUrl="~/img/arrows.png" Visible="false" />
            </th>
            <th>
                <asp:LinkButton ID="lnkamt" runat="server" CommandName="Sort" CommandArgument="pmtamt">Amount</asp:LinkButton>
                <asp:Image runat="server" ID="SortRevImage4" ImageUrl="~/img/arrows.png" Visible="false" />
            </th>
            <th>Delete</th>
        </tr>
        <tr id="itemPlaceholder" runat="server"></tr>
    </table>
    <div class="pager">
        <asp:DataPager ID="paidpager" runat="server" PageSize="20" PagedControlID="paidlv">
            <Fields>
                <asp:NextPreviousPagerField ShowNextPageButton="False" ButtonCssClass="previousNextLink" />
                <asp:NumericPagerField ButtonCount="10" ButtonType="Link" NumericButtonCssClass="numericLink" />
                <asp:NextPreviousPagerField ShowPreviousPageButton="False" ButtonCssClass="previousNextLink" />
            </Fields>
        </asp:DataPager>
    </div>
</LayoutTemplate>
<ItemTemplate>
    <tr class="altRow rowcolor">
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lbldate"><%#Eval("pmtdate", "{0:d}") %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lbltname"><%#Eval("tname") %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lblcname"><%#Eval("cname") %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lblhalf"><%#Eval("half").ToString() == "1" ? "First" : Eval("half").ToString() == "2" ? "Second" : "Full" %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lblamt"><%#Eval("pmtamt", "{0:C}") %></asp:Label>
        </td>
        <td>
            <asp:ImageButton runat="server" ID="btndelete" ImageUrl="~/img/delete.png" OnClick="btndelete_Click" PostBackUrl="~/transaction.aspx" CssClass="deletebutton" CommandArgument='<%#Eval("transactionid") %>' />
        </td>
        <asp:HiddenField runat="server" ID="lblrevid" Value='<%#Eval("transactionid") %>' />
    </tr>
</ItemTemplate>
<AlternatingItemTemplate>
    <tr class="rowcolor">
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lbldate"><%#Eval("pmtdate", "{0:d}") %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lbltname"><%#Eval("tname") %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lblcname"><%#Eval("cname") %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lblhalf"><%#Eval("half").ToString() == "1" ? "First" : Eval("half").ToString() == "2" ? "Second" : "Full" %></asp:Label>
        </td>
        <td class="valigntop" onclick="DoNav('<%# Eval("transactionid","bookdeal.aspx?tid={0}") %>');">
            <asp:Label runat="server" ID="lblamt"><%#Eval("pmtamt", "{0:C}") %></asp:Label>
        </td>
        <td>
            <asp:ImageButton runat="server" ID="btndelete" ImageUrl="~/img/delete.png" OnClick="btndelete_Click" PostBackUrl="~/transaction.aspx" CssClass="deletebutton" CommandArgument='<%#Eval("transactionid") %>' />
        </td>
        <asp:HiddenField runat="server" ID="lblrevid" Value='<%#Eval("transactionid") %>' />
    </tr>
</AlternatingItemTemplate>
<EmptyDataTemplate>
            <table id="empty">
                <tr>
                    <td id="tdempty">
                        <br />
                        Sorry, no data found
                    </td>
                </tr>
            </table>
</EmptyDataTemplate>
</asp:ListView>

日期
交易名称
客户名称
部分
数量
删除

对不起,找不到数据
您可以尝试使用数据

private void DataTableToExcel(DataTable dataTable)
{
    StringWriter writer = new StringWriter();
    HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
    GridView gridView = new GridView();
    gridView.DataSource = dataTable;
    gridView.AutoGenerateColumns = true;
    gridView.DataBind();
    gridView.RenderControl(htmlWriter);
    htmlWriter.Close();

    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
    Response.Charset = "";
    Response.Write(writer.ToString());
    Response.End();
}

我已经编辑了你的标题。请看“”,其中的共识是“不,他们不应该”。谢谢汉斯。这就成功了。我创建了一个新的datatable,添加了标题,对我的行进行了foreach'd,然后使用您的方法进行导出。我做了一个改进,添加了Response.ContentType,这样保存对话框默认自动选择Excel。为后代编辑你的文章。