2015-02-11 110 views
0

我正在尝试使用此代码将我的面板导出到excel中。在C#中导出为ex​​cel错误

设计:

<asp:Panel ID="ExcelPanel" runat="server" Visible="false"> 
    <asp:GridView ID="ExcelGridView" runat="server" AutoGenerateColumns="False" 
    Width="100%" CellPadding="3" ForeColor="#333333" GridLines="Both" ShowHeader="True" Visible="true" > 
     <Columns> 
      <asp:TemplateField HeaderText="S. No." HeaderStyle-CssClass="gridViewHeader" ItemStyle-HorizontalAlign="left" SortExpression="wcName" ItemStyle-Width="12%"> 
       <ItemTemplate> 
        <asp:Label ID="performanceReportTBMWCNameLabel" runat="server" Text='<%# Eval("SNo") %>' CssClass="gridViewItems"></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
</asp:Panel> 

C#代码:

ExcelGridView.DataSource = gridviewdt; 
ExcelGridView.DataBind(); 
ExcelPanel.Visible = true; 
Response.Clear(); 
Response.ClearHeaders(); 
Response.ClearContent(); 
Response.Buffer = true; 
Response.AddHeader("content-disposition", "attachment;filename=file.xls"); 
Response.ContentType = "application/vnd.ms-excel"; 

StringWriter stringWrite = new StringWriter(); 
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
ExcelPanel.RenderControl(htmlWrite); 

Response.Write(stringWrite.ToString()); 

Response.Flush(); 
Response.End(); 
ExcelPanel.Visible = false; 

这是我想在我的excel文件的区域。但是我正在使用母版页以及excel文件获取整个页面。我怎样才能避免整个页面,只有在Excel文件中获取面板?

回答

0

您从ExcelPanel渲染HTML,因此它显示关于该面板改变面板GridView所以它会从GridView

变化获取HTML

ExcelPanel.RenderControl(htmlWrite); 

ExcelGridView.RenderControl(htmlWrite); 
+0

所有HTML面板只包含gridview。其他一切都在面板之外。所以,我使用面板来优化。如果我从面板中删除gridview,那么我不会占用整个页面,但在面板内部使用gridview时,它会占用整个页面。 – Rohan 2015-02-11 06:55:56