C# 从gridview asp.net导出到excel
我读了很多关于C# 从gridview asp.net导出到excel,c#,asp.net,excel,gridview,export,C#,Asp.net,Excel,Gridview,Export,我读了很多关于stackoverflow和code项目的文章,我也在我的代码和页面中实现了这一点。但我无法将gridview数据导出到excel。我正在将我的gridview与页面上的对象数据源绑定。但没有成功导出到excel。你能告诉我我做错了什么吗。下面我给出的所有代码流 <%@ Page Language="C#" Theme="Default" MasterPageFile="~/Order/Order.master" AutoEventWireup="true" CodeFile
stackoverflow
和code项目
的文章,我也在我的代码和页面中实现了这一点。但我无法将gridview数据导出到excel。我正在将我的gridview
与页面上的对象数据源绑定。但没有成功导出到excel。你能告诉我我做错了什么吗。下面我给出的所有代码流
<%@ Page Language="C#" Theme="Default" MasterPageFile="~/Order/Order.master" AutoEventWireup="true" CodeFile="ActiveOrders.aspx.cs" Inherits="ActiveOrders" Title="SimplyDispatch-ActiveOrders List" EnableEventValidation="false" %>
<data:EntityGridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
DataSourceID="ActiveOrdersDataSource" Width="100%" DataKeyNames="OrderNo" AllowMultiColumnSorting="false" DefaultSortColumnName="OrderNo" OnRowCommand="GridView1_RowCommond" OnRowDataBound="GridView1_OnRowDataBound" AllowSorting="true" DefaultSortDirection="Descending" PageSize="50" EnableViewState="true" >
<Columns>
<asp:BoundField DataField="OrderNo" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right" HeaderText="Order No" SortExpression="[OrderNo]" />
<asp:BoundField DataField="OrderDate" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" HtmlEncode="False" HeaderText="Order Date" SortExpression="[OrderDate]" />
</Columns>
<EmptyDataTemplate>
</EmptyDataTemplate>
</data:EntityGridView>
尝试此代码
protected void ExportToExcel(object sender, EventArgs e)
{
try
{
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("contentdisposition","attachment;filename=Demo.xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
Label lblheader = new Label();
lblheader.Font.Size = 14;
lblheader.Font.Bold = true;
lblheader.Text = "Demo Detail";
lblheader.RenderControl(hw);
GrdExcel.RenderControl(hw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();
GrdExcel.Visible = false;
}
catch (Exception ex)
{
}
}
使EnableEventValidation=True,然后重试。或者使用closedXML这是导出到excel的最简单方法之一,而且效率也很高。
将datatable保存在会话中,并将datatable传递给以下方法,以执行导出功能
public void ExportToExcel(DataTable dt)
{
XLWorkbook wb = new XLWorkbook();
//Specify sheet name
var ws = wb.Worksheets.Add(dt, "SHEET NAME");
ws.Columns().AdjustToContents();
ws.Style.Fill.BackgroundColor = XLColor.Transparent;
var excelTable = ws.Tables.First();
excelTable.ShowAutoFilter = false;
excelTable.ShowRowStripes = false;
excelTable.Theme = XLTableTheme.None;
excelTable.Style.Border.TopBorder = XLBorderStyleValues.Thin;
excelTable.Style.Border.BottomBorder = XLBorderStyleValues.Thin;
excelTable.Style.Border.RightBorder = XLBorderStyleValues.Thin;
excelTable.Style.Border.LeftBorder = XLBorderStyleValues.Thin;
var headerRow = ws.Tables.First().FirstRow();
headerRow.Style.Fill.BackgroundColor = XLColor.Transparent;
headerRow.Style.Font.Bold = true;
//specify filename
string fileName = "File Name" + ".xlsx";
HttpResponse httpResponse = Response;
httpResponse.Clear();
httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
httpResponse.AddHeader("content-disposition", "attachment;filename=\"" + fileName + "\"");
// Flush the workbook to the Response.OutputStream
using (MemoryStream memoryStream = new MemoryStream())
{
wb.SaveAs(memoryStream);
memoryStream.WriteTo(httpResponse.OutputStream);
memoryStream.Close();
}
httpResponse.End();
}
什么不起作用?您有任何异常吗?@VIVEK没有收到任何错误,但没有创建excel文件。代码成功执行。但是如何从gridview从此DLL导出?使用ClosedXML.Excel也包括此命名空间代码>如果有帮助,将其标记为答案
protected void ExportToExcel(object sender, EventArgs e)
{
try
{
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("contentdisposition","attachment;filename=Demo.xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
Label lblheader = new Label();
lblheader.Font.Size = 14;
lblheader.Font.Bold = true;
lblheader.Text = "Demo Detail";
lblheader.RenderControl(hw);
GrdExcel.RenderControl(hw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();
GrdExcel.Visible = false;
}
catch (Exception ex)
{
}
}
public void ExportToExcel(DataTable dt)
{
XLWorkbook wb = new XLWorkbook();
//Specify sheet name
var ws = wb.Worksheets.Add(dt, "SHEET NAME");
ws.Columns().AdjustToContents();
ws.Style.Fill.BackgroundColor = XLColor.Transparent;
var excelTable = ws.Tables.First();
excelTable.ShowAutoFilter = false;
excelTable.ShowRowStripes = false;
excelTable.Theme = XLTableTheme.None;
excelTable.Style.Border.TopBorder = XLBorderStyleValues.Thin;
excelTable.Style.Border.BottomBorder = XLBorderStyleValues.Thin;
excelTable.Style.Border.RightBorder = XLBorderStyleValues.Thin;
excelTable.Style.Border.LeftBorder = XLBorderStyleValues.Thin;
var headerRow = ws.Tables.First().FirstRow();
headerRow.Style.Fill.BackgroundColor = XLColor.Transparent;
headerRow.Style.Font.Bold = true;
//specify filename
string fileName = "File Name" + ".xlsx";
HttpResponse httpResponse = Response;
httpResponse.Clear();
httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
httpResponse.AddHeader("content-disposition", "attachment;filename=\"" + fileName + "\"");
// Flush the workbook to the Response.OutputStream
using (MemoryStream memoryStream = new MemoryStream())
{
wb.SaveAs(memoryStream);
memoryStream.WriteTo(httpResponse.OutputStream);
memoryStream.Close();
}
httpResponse.End();
}