2 qq 27117987 qq_27117987 于 2016.05.10 17:28 提问

gridview中数据导出到excel

在asp.net中,怎么把gridview中的数据导出到excel中,有没有例子,参考一下

3个回答

CSDNXIAOC
CSDNXIAOC   2016.05.10 17:33

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=sx.xls");
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;......
答案就在这里:GridView导出数据到Excel
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

SHENQUANYU
SHENQUANYU   2016.05.10 17:48

引用的别人的:
Gridview导出为Excel
尝试了一下Gridview导出为Excel,原本以为很简单,可是真正应用起来还是不太好弄的,呵呵,所想非所得。总结了一下应该注意下面几点:
1.由于gridview的内容可能是分页显示的,因此,这里在每次导出excel时,先将gridview的allowpaging属性设置为false,然后databind()一下,确保搂到所有数据;
2.不用单独设置导出的路径,导出时会弹出对话框让你确认保存位置;
3.要写一个空的VerifyRenderingInServerForm方法(必须写),以确认在运行时为指定的ASP.NET 服务器控件呈现HtmlForm 控件;
4.导出后别忘记再重新设置其allowpaging属性;
当我把这些都设置好以后,点击[导出],出现了 只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called during Render(); ) 的错误,又检查代码,没发现问题啊,搞了一会弄不出来,然后搜索了一下,发现了解决办法:
修改你的aspx文件中的:
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" CodeFile="SysUser.aspx.cs" Inherits="Autho_SysUser2" %>
增加红色的部分就ok了。
下面是代码和截图:
#region 导出为Excel
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}

private void ToExcel(Control ctl, string FileName)
{
    HttpContext.Current.Response.Charset = "UTF-8";
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
    HttpContext.Current.Response.ContentType = "application/ms-excel";
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);
    ctl.Page.EnableViewState = false;
    System.IO.StringWriter tw = new System.IO.StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(tw);
    ctl.RenderControl(hw);
    HttpContext.Current.Response.Write(tw.ToString());
    HttpContext.Current.Response.End();
}

private void toExcelClk()
{
    gvSysUser.AllowPaging = false;
    gvSysUser.AllowSorting = false;
    gvSysUser.DataBind();
    ToExcel(gvSysUser, "OFS_Data.xls");
    gvSysUser.AllowPaging = true;
    gvSysUser.AllowSorting = true;
    gvSysUser.DataBind();
}
#endregion     求采纳
Ivan_Whisper
Ivan_Whisper   2016.06.01 12:37

分享一个DataGridViewToExcel类
首先引用添加Excel Library15.0(我的VS是2015的 OFFICE是2013比较新)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace DataBaseTools
{
///
/// DatagridView导出成EXCEL类
///
public class DataGridViewToExcel
{
///
/// DatagridView导出成EXCEL
///
/// 源数据DataGridView
/// 进度条
/// 状态条
public void DataToExcel(DataGridView dgv, ToolStripProgressBar tempProgressBar, ToolStripStatusLabel toolstrip)

    {

        if (dgv.Rows.Count == 0)

        {
            MessageBox.Show("无数据"); return;

        }

        MessageBox.Show("开始生成要导出的数据", "导出提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

        Excel.Application excel = new Excel.Application();

        excel.Application.Workbooks.Add(true);

        excel.Visible = false;

        for (int i = 0; i < dgv.ColumnCount; i++)

            excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;

        tempProgressBar.Visible = true;

        tempProgressBar.Minimum = 1;

        tempProgressBar.Maximum = dgv.RowCount;

        tempProgressBar.Step = 1;

        toolstrip.Visible = true;

        for (int i = 0; i < dgv.RowCount; i++)

        {

            for (int j = 0; j < dgv.ColumnCount; j++)

            {

                if (dgv[j, i].ValueType == typeof(string))

                {

                    excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();

                }

                else

                {

                    excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();

                }

            }

            toolstrip.Text = "|| 状态:正在生成第 " + i + "/" + dgv.RowCount + " 个";

            tempProgressBar.Value = i + 1;

        }

        toolstrip.Text = "|| 状态:生成成功!";

        MessageBox.Show("生成成功,请保存。", "生成提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

        excel.Visible = true;

    }

}

}

Ivan_Whisper
Ivan_Whisper 复制的时候出了点问题,自己稍微改下就好
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在ASP.NET中GridView导出Excel的快速方法
此方法最有效,所以贴出来与大家分享 protected void btnOutExcel_Click(object sender, EventArgs e) { if (GridView1.Rows.Count > 0) { //调用导出方法 Ex
ASP.NET GridView导出数据到Excel
ASP.NET GridView导出数据到Excel 首先要把GridView控件放到panel中                                                             AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" OnRowDeleting="gr
把GridView中选中的行导出为Excel文件
01 DataTable dt = new DataTable(); 02 dt.Columns.Add("empid"); 03 dt.Columns.Add("empname"); 04 foreach (GridViewRow row in GridView1.Row
实现GridView中的数据的打印和导出到Excel
MSDN上对 VerifyRenderingInServerForm 方法的解释是:  必须位于 标记中的控件可以在呈现之前调用此方法,以便在控件被置于标记外时显示错误信息。发送回或依赖于注册的脚本块的控件应该在 Control.Render 方法的重写中调用此方法。呈现服务器窗体元素的方式不同的页可以重写此方法以在不同的条件下引发异常。  如果回发或使用客户端脚本的服务器控件没有包含在 Htm
GridView导出到Excel
将GridView中的数据导出到Excel中。
Asp.net Gridview 导出到Excel【解决编码乱码问题】
public override void VerifyRenderingInServerForm(Control control) { } protected void LinkButton2_Click(object sender, EventArgs e) { Response.Clear(); Response.Buffer = tru
最简单实用的GridView导出到Excel表格代码
protected void btnExcel_Click(object sender, EventArgs e) { if (Session["strWhere"] == null) { MessageBox.Show(this, "请先查询,再导出EXCEL"); r
C#,ASP.NET把gridview中的数据导出到Excel中
cs:类public static void OutPutExcel(GridView GridView1)    {        //        HttpContext.Current.Response.Clear();        HttpContext.Current.Response.Buffer = true;        HttpContext.Current.Respons
GridView导出Excel的方法
把GridView中的数据导出Excel的简单方法
VS 中将GridView 中的数据导出至excel
VS中将GridView 中的数据导出至excel