【发布时间】:2017-02-06 10:43:30
【问题描述】:
我正在尝试从页面导出网格视图的数据。但是当我将数据导出到 excel 文件时,它会导出整个页面。我只想导出网格视图的数据。我浏览了几个链接,但没有发现自己满意。下面是我的导出代码。
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
using (StringWriter sw = new StringWriter())
{
HtmlTextWriter hw = new HtmlTextWriter(sw);
//To Export all pages
gvWorkOrder.AllowPaging = false;
this.LoadData();
gvWorkOrder.HeaderRow.BackColor = Color.White;
foreach (TableCell cell in gvWorkOrder.HeaderRow.Cells)
{
cell.BackColor = gvWorkOrder.HeaderStyle.BackColor;
}
foreach (GridViewRow row in gvWorkOrder.Rows)
{
row.BackColor = Color.White;
foreach (TableCell cell in row.Cells)
{
if (row.RowIndex % 2 == 0)
{
cell.BackColor = gvWorkOrder.AlternatingRowStyle.BackColor;
}
else
{
cell.BackColor = gvWorkOrder.RowStyle.BackColor;
}
cell.CssClass = "textmode";
}
}
gvWorkOrder.RenderControl(hw);
//style to format numbers to string
string style = @"<style> .textmode { } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
这是我的 aspx 页面。
<asp:TemplateField ItemStyle-ForeColor="#192d98" HeaderStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:LinkButton runat="server" Text="Print" ID="lnkPrint" CommandName="PrintWorkOrder" CommandArgument='<%#Eval("WorkOrderNo") %>' ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-ForeColor="#192d98" HeaderStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:LinkButton runat="server" Text="تحرير" ID="lnkButton" PostBackUrl='<%# string.Format("~/ServiceManagement/WorkOrderCreation_AR.aspx?WorkOrderID={0}", Eval("WorkOrderNo"))%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderStyle-HorizontalAlign="Right" ItemStyle-ForeColor="#192d98"
DataField="Location" HeaderText="فرع">
<ItemStyle ForeColor="#192D98"></ItemStyle>
</asp:BoundField>
<asp:BoundField HeaderStyle-HorizontalAlign="Right" ItemStyle-ForeColor="#192d98"
DataField="VendorID" HeaderText="رقم المورد">
<ItemStyle ForeColor="#192D98"></ItemStyle>
</asp:BoundField>
<asp:BoundField HeaderStyle-HorizontalAlign="Right" ItemStyle-ForeColor="#192d98"
DataField="CustomerName" HeaderText="اسم العميل">
<ItemStyle ForeColor="#192D98"></ItemStyle>
</asp:BoundField>
<asp:BoundField HeaderStyle-HorizontalAlign="Right" ItemStyle-ForeColor="#192d98"
DataField="CustomerID" HeaderText="رقم العميل">
<ItemStyle ForeColor="#192D98"></ItemStyle>
</asp:BoundField>
<asp:BoundField HeaderStyle-HorizontalAlign="Left" ItemStyle-ForeColor="#192d98"
DataField="Status" HeaderText="حالة الأمر">
<ItemStyle ForeColor="#192D98"></ItemStyle>
</asp:BoundField>
<asp:BoundField HeaderStyle-HorizontalAlign="Right" ItemStyle-ForeColor="#192d98"
DataField="CreatedOn" DataFormatString="{0:dd/MM/yyyy}" HeaderText="تاريخ الأمر">
<ItemStyle ForeColor="#192D98"></ItemStyle>
</asp:BoundField>
<%--<asp:HyperLinkField HeaderStyle-HorizontalAlign="Right" DataNavigateUrlFields="ORIGNUMB,ORIGTYPE"
Target="_new" DataNavigateUrlFormatString="SalesOrderCreationReport_ar.aspx?Id={0}&Soptype={1}"
DataTextField="ORIGNUMB" HeaderText="# وثيقة الاساسي" />--%>
<asp:BoundField HeaderStyle-HorizontalAlign="Right" ItemStyle-ForeColor="#192d98"
DataField="WorkOrderNo" HeaderText="رقم أمر الصيانة">
<ItemStyle ForeColor="#192D98"></ItemStyle>
</asp:BoundField>
</Columns>
<AlternatingRowStyle BackColor="White" />
<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>
任何帮助将不胜感激。
【问题讨论】:
-
开始使用专门的库来创建 Excel 文件,例如 EPPlus。您现在所做的只是创建一个扩展名为 .xls 的 HTML 文件。