C# Excel导出无法正常工作

C# Excel导出无法正常工作,c#,asp.net,C#,Asp.net,Excel导出工作不正常。代码有什么问题,我需要帮助 下面是我的代码 <asp:Panel ID="Panel2" runat="server" ScrollBars="Vertical"> <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" For

Excel导出工作不正常。代码有什么问题,我需要帮助

下面是我的代码

<asp:Panel ID="Panel2" runat="server" ScrollBars="Vertical">
        <asp:GridView ID="GridView1" runat="server" 
            AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" 
            ForeColor="#333333" GridLines="None" Height="171px" Width="748px" 
             RowStyle-VerticalAlign="Bottom" 
            onrowcancelingedit="GridView1_RowCancelingEdit" 
            onrowdatabound="GridView1_RowDataBound" onrowdeleting="GridView1_RowDeleting" 
            onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" DataKeyNames="AccountId" >
            <AlternatingRowStyle BackColor="White" BorderColor="Black" BorderStyle="Solid" 
                BorderWidth="1px" />
            <Columns>
                <asp:TemplateField HeaderText="Action">
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:CommandField HeaderText="Edit" ShowEditButton="True" />
                <asp:CommandField ShowDeleteButton="True" />
                <asp:TemplateField HeaderText="AccountId" ShowHeader="False" Visible="False">
                    <ItemTemplate>
                        <asp:Label ID="Label15" runat="server" Text="<%# bind('AccountId') %>"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Account Name">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox2" runat="server" Text="<%# bind('AccountName') %>"></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label4" runat="server" Text="<%# bind('AccountName') %>"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Account Desc">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox3" runat="server" Text="<%# bind('AccountDesc') %>"></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label5" runat="server" Text="<%# bind('AccountDesc') %>"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Account Type">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox4" runat="server" Text="<%# bind('AccountType') %>"></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label6" runat="server" Text="<%# bind('AccountType') %>"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="TDS %">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox5" runat="server" Text="<%# bind('TDSper') %>"></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label7" runat="server" Text="<%# bind('TDSper') %>"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="ADV %">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox6" runat="server" Text="<%# bind('Advper') %>"></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label8" runat="server" Text="<%# bind('Advper') %>"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <EditRowStyle BackColor="#2461BF" />
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#EFF3FB" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#F5F7FB" />
            <SortedAscendingHeaderStyle BackColor="#6D95E1" />
            <SortedDescendingCellStyle BackColor="#E9EBEF" />
            <SortedDescendingHeaderStyle BackColor="#4870BE" />
        </asp:GridView>

这是onclick excel,下面是图像编码

protected void ImageButton7_Click(object sender, ImageClickEventArgs e)
    {
        try
        {

            Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Employees.xls"));
            Response.ContentType = "application/ms-excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            GridView1.AllowPaging = false;

            //Change the Header Row back to white color
            GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");
            //Applying stlye to gridview header cells
            for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
            {
                GridView1.HeaderRow.Cells[i].Style.Add("background-color", "#507CD1");
            }
            int j = 1;
            //Set alternate row color
            foreach (GridViewRow gvrow in GridView1.Rows)
            {
                gvrow.BackColor = System.Drawing.Color.White;
                if (j <= GridView1.Rows.Count)
                {
                    if (j % 2 != 0)
                    {
                        for (int k = 0; k < gvrow.Cells.Count; k++)
                        {
                            gvrow.Cells[k].Style.Add("background-color", "#EFF3FB");
                        }
                    }
                }
                j++;
            }
            GridView1.RenderControl(htw);
            Response.Flush();
            Response.Write(sw.ToString());
            Response.End();
        }
        catch (Exception ex)
        {
            ex.ToString();
        }
    }
protectedvoid ImageButton7\u单击(对象发送者,ImageClickEventArgs e)
{
尝试
{
Response.ClearContent();
Response.Buffer=true;
AddHeader(“内容处置”,string.Format(“附件;文件名={0}”,“Employees.xls”);
Response.ContentType=“应用程序/ms excel”;
StringWriter sw=新的StringWriter();
HtmlTextWriter htw=新的HtmlTextWriter(sw);
GridView1.AllowPaging=false;
//将标题行更改回白色
GridView1.HeaderRow.Style.Add(“背景色”和“#FFFFFF”);
//将stlye应用于gridview标题单元格
对于(int i=0;i如果(ji)面临同样的问题

这里有一个解决方案,试试看。 [测试这个][1]


此程序导入和导出数据。我已尝试过。工作正常。感谢用户。

此代码在我的项目中运行良好

DataSet1TableAdapters.Mas_SubItemTableAdapter object_customer = new DataSet1TableAdapters.Mas_SubItemTableAdapter();
        DataSet1.Mas_SubItemDataTable table = object_customer.GetData();
        DataGrid dg = new DataGrid();
        dg.DataSource = table;
        dg.DataBind();
        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment; filename= Subitem.xls");
        Response.ContentType = "application/excel";
        //[].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
        System.IO.StringWriter sw = new System.IO.StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        dg.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.End();
试试这个,希望对你有帮助