`
zxd543
  • 浏览: 3286 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙
社区版块
存档分类
最新评论

解决Girdviewd导出Excel的相关问题

阅读更多
前台代码如下不多说:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" EnableEventValidation="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <style type="text/css">
        #form1
        {
            height: 645px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
        AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333"
        GridLines="None" Height="234px"
        onpageindexchanging="GridView1_PageIndexChanging" Width="782px">
        <PagerSettings FirstPageText="首页" LastPageText="尾页"
            Mode="NextPreviousFirstLast" NextPageText="下一页" PreviousPageText="上一页" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <Columns>
            <asp:BoundField DataField="id" HeaderText="序号">
                <ItemStyle HorizontalAlign="Center" />
            </asp:BoundField>
            <asp:BoundField DataField="StuId" HeaderText="学号">
                <ItemStyle HorizontalAlign="Center" />
            </asp:BoundField>
            <asp:BoundField DataField="StuPwd" HeaderText="密码">
                <ItemStyle HorizontalAlign="Center" />
            </asp:BoundField>
            <asp:BoundField DataField="StuName" HeaderText="姓名">
                <ItemStyle HorizontalAlign="Center" />
            </asp:BoundField>
            <asp:BoundField DataField="StuCardId" HeaderText="身份证号">
                <ItemStyle HorizontalAlign="Center" />
            </asp:BoundField>
            <asp:BoundField DataField="TeaName" HeaderText="任课教师">
                <ItemStyle HorizontalAlign="Center" />
            </asp:BoundField>
        </Columns>
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#999999" />
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    </asp:GridView>
    <br />
    <br />
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click"
        Text="导出到Excel" />
    </form>
</body>
</html>


后台代码如下:注释很详细不再累赘

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;///添加数据库操作的命名空间
using System.IO;///添加输出操作的命名空间
public partial class _Default : System.Web.UI.Page
{
    /// <summary>
    /// 绑定Gridview 控件的数据
    /// </summary>
    /// <returns></returns>
    protected bool BindDB()
    {
        string sqlcon = ConfigurationManager.ConnectionStrings["DBString"].ConnectionString;
        SqlConnection con = new SqlConnection(sqlcon);
        con.Open();
        string strSelect = "select * from Student ";
        SqlDataAdapter sda = new SqlDataAdapter(strSelect,sqlcon);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        GridView1.DataSource = ds;
        try
        {
            GridView1.DataBind();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            con.Close();
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindDB();///数据库绑定
        }
    }
    /// <summary>
    /// Gridview 分页操作 没有分业的可以不添加此方法
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        BindDB();
    }
    /// <summary>
    /// Gridview数据导出到Excel的操作
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Button1_Click(object sender, EventArgs e)
    {
        #region
        ///在导出的时候,如果某个字段为长数字(如身份证号码511922198507151512)、以0开头的编号(如0914490000)
        ///之类的数据。如果不加处理在导出的Excel文件中将会被分别当作5.11922E+17和809111212来处理,这样与我们要达到的
        ///实际效果不一致。所以我们要加以处理,即给单元格数据规定格式
        ///即我们在导出的时候把类型改掉
        //for (int i=0; i < GridView1.Rows.Count; i++)
        //{
        //    GridView1.Rows[i].Cells[4].Text = "'" + GridView1.Rows[i].Cells[4].Text;
        //}
        #endregion


        ///另一种方式就是
        ///解决思路:在Excel中作一个包含有"012457890"的内容,设定单元格的显示方式,然后保存成Html的文件,
        ///在查看源代码. 发现在 CSS格式定义中有:td{mso-number-format:"\@";}.这样问题就容易解决了.我用的此种方式


        GridView1.AllowPaging = false;///清除分页,便于导出数据
        BindDB();  ///绑定Griedview数据                           
        Response.ClearContent();
        Response.Charset = "GB2312"; ///设定输出的字符集 
        string strStyle = "<style>td{mso-number-format:\"\\@\";}</style>"; ///设置输出格式


        ///解决导出到Excel2003乱码问题
        ///HttpUtility.UrlEncode("学生信息表.xls", System.Text.Encoding.UTF8).ToString())                                                                 
        Response.AddHeader("content-disposition", "attachment; filename=" +
                           HttpUtility.UrlEncode("学生信息表.xls", System.Text.Encoding.UTF8).ToString());     
        Response.ContentType = "application/excel"; ///设置导出文件的格式
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        sw.WriteLine(strStyle); ///读取格式
       
        ///GridView1.Columns[11].Visible = false; ///某一列Gridview数据不导出


        GridView1.RenderControl(htw);
        Response.Write(sw.ToString()); ///把HTML写回浏览器 
        Response.End();
        GridView1.AllowPaging = true;///恢复分业
        BindDB();///绑定Griedview数据
    }
    /// <summary>
    /// 此方法一定要重载,否则报错!
    /// </summary>
    /// <param name="control"></param>
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
}

主要解决了Gridview导出到Excel
图不会传。。。。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    使用aspose导出Excel(根据模板导出excel).zip

    在本示例中,我们将深入探讨如何使用Aspose库在.NET环境中根据模板导出Excel电子表格。这个过程涉及到多个步骤和技术,包括理解Aspose的API、模板设计以及数据注入。 首先,Aspose库提供了强大的Excel操作功能,...

    poi导出根据模板导出excel和简单列表导出excel源码

    为解决这个问题,可以采用流式处理(Streaming User Model)或分批处理。例如,使用SXSSF(Streaming Usermodel API)可以避免一次性加载所有数据,它会在磁盘上创建一个临时文件,从而减少内存占用。 4. **代码...

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...

    导出Excel功能,导出Excel功能,导出Excel功能

    下面我们将深入探讨导出Excel功能的相关知识点。 1. **编程接口**:大多数情况下,开发人员会使用编程语言(如Python的pandas库,Java的Apache POI,C#的EPPlus等)来实现导出Excel功能。这些库提供了API,允许我们...

    jquery 导出excel方法

    下面将详细介绍jQuery导出Excel的方法,以及相关知识点。 1. **jQuery插件:TableExport** 文件`tableExport.jquery.plugin-a891806`可能是一个名为TableExport的jQuery插件,它允许开发者将HTML表格数据导出为...

    易语言高级表格快速导出EXCEL

    在IT行业中,易语言是一种基于汉语编程的编程环境,它以简单、直观的...通过阅读和分析这些源代码,可以深入理解易语言在处理表格数据和导出Excel方面的技术细节,这对于提升易语言编程技能和解决实际问题非常有帮助。

    轻松解决datagrid-export.js的导出excel数字变科学计数法的问题

    本文件只需修改一个属性,直接替换官方文件,引入即可解决导出excel的数字变成科学计数法的...本项目利用的是jquery扩展的datagrid-export.js输出excel,所以,前端输出文件格式的字段类型控制才是解决问题的关键所在。

    GridControl通用导出Excel

    - 需要注意文件名冲突的问题,本示例中通过在重复的文件名后面添加序号来解决这个问题。 - 确保所有参与导出的控件都实现了`IPrintable`接口,以便于统一处理。 - 对于不同类型的数据控件(如GridControl、Chart、...

    layui数据表格导出Excel插件

    在实际项目中,数据导出功能是常见的需求,例如数据分析、报表生成等场景,而layui提供的这个插件则解决了这个问题。 该插件的核心是`excel.js`和`excel.min.js`两个文件。`excel.js`是未压缩的源代码,方便开发者...

    java 导出excel,带图片的Excel导出

    7. **流式处理和内存管理**:如果导出的Excel文件很大,一次性加载所有数据可能导致内存问题。使用POI的SXSSF(Streaming Usermodel API)可以解决这个问题,它将数据写入磁盘,而不是全部保留在内存中。 8. **文件...

    Delphi DBGrid导出Excel2010

    Delphi DBGrid 导出 Excel 2010 Delphi DBGrid 是一个强大的数据-grid 控件,经常用于展示大量数据。然而,在实际应用中,我们经常需要将 DBGrid 中的数据导出到其他格式,例如 Excel,以便于数据分析和处理。下面...

    pb导出excel2007

    "pb导出excel2007"这个主题涉及到的是如何在PowerBuilder中将数据窗口(DataWindow)的内容导出到Excel 2007格式的文件中。在实际开发中,有时我们需要将PB的数据窗口数据导出到Excel以便于分析、处理或分享,而这个...

    lodop导出ExcelDemo

    它是一款轻量级的打印控件,主要用在浏览器环境中,用于解决网页打印的问题。LODOP提供了一套JavaScript接口,开发者可以调用这些接口来实现复杂的打印需求,包括设置页面样式、添加页眉页脚、自定义打印范围等。...

    ALV导出excel时窜行

    综上所述,通过上述方法的应用,我们可以有效解决ALV导出数据至Excel时出现的窜行问题。用户在操作过程中需要特别注意特殊字符和双引号的处理,同时应掌握Excel的文本解析规则。这样不仅能提高数据导出的准确性,也...

    C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法

    "C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法" 在导出Excel文件时,经常会遇到“文件格式与扩展名指定格式不一致”的问题,这是因为大多数人在导出Excel文件时,都是默认保存Excel的格式...

    C#导出Excel复杂表头解决方案

    标题"**C#导出Excel复杂表头解决方案**"涉及的是在C#应用程序中如何高效地创建包含复杂结构的Excel表头,这在数据报告、数据分析或自动化办公场景中非常常见。复杂表头可能包括多级标题、合并单元格、自定义样式等。...

    ext实现导出excel的功能。

    在EXTJS这个强大的JavaScript框架中,实现导出Excel功能是一项常见的需求。EXTJS提供了一种高效的方法来将数据导出到Excel格式,使得用户能够方便地处理和分析数据。在这个场景下,我们可以从以下几个关键知识点入手...

    DevExpress 控件导出Excel通用方法(GridControl打印多表头和图片等,并支持多个控件同时打印)

    解决GridControl自带方法不能导出图片,多表头无法导出等问题,解决PivotGridControl导出时候自动分组的问题,真正做到所见所得的导出excel方法,并且支持多个控件一同导出同一个excel

Global site tag (gtag.js) - Google Analytics