VS2005中 GridView导入Excel的导入需要注意的几点

最近带的项目遇到GridView导入Excel问题,总结出几点:

1、如果出现下面的错误提示可用重载VerifyRenderingInServerForm方法解决。

错误提示:
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内

在后台文件中重载VerifyRenderingInServerForm方法,如:
public override void VerifyRenderingInServerForm(Control control)
{
     //base.VerifyRenderingInServerForm(control);
}

2、如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。

可用Response.ContentEncoding = System.Text.Encoding.UTF7;
或者Encoding.UTF8等来解决,不过导入格式和字体上个人感觉UTF7比UTF8效果好些;
因人而异了:)

源码下载地址:http://bbs.52happy.net/read.php?tid=219811

相关代码如下:

Web.config配置:

<?xml version="1.0"?>
<!-- 
    注意: 除了手动编辑此文件以外,您还可以使用 
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在 
    machine.config.comments 中,该文件通常位于 
    \Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
    <appSettings>
        <!--数据库连接串-->
        <add key="ConnectionString" value="data source=.;initial catalog=Northwind;user id=sa;password=sa;persist security info=true;packet size=4096"/>
    </appSettings>
    <connectionStrings/>
    <system.web>
        <!-- 
            设置 compilation debug="true" 将调试符号插入
            已编译的页面中。但由于这会 
            影响性能,因此只在开发过程中将此值 
            设置为 true。
        -->
        <compilation debug="true"/>
        <!--
            通过 <authentication> 节可以配置 ASP.NET 使用的 
            安全身份验证模式,
            以标识传入的用户。 
        -->
        <authentication mode="Windows"/>
        <!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
    </system.web>
</configuration>
ASPX页面代码:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        &nbsp;
        <asp:GridView ID="GridView1" runat="server" AllowPaging="true" OnPageIndexChanging="Paging">
        </asp:GridView>
    
    </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="导出到Excel" />
    </form>

</body>
</html>

实例代码:
/*
 *    // by XiaoYin [10/22/2006]
 */
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Xml;

public partial class _Default : System.Web.UI.Page 
{

    /// <summary>
    /// 链接字符串
    /// </summary>
    public string ConnectString
    {
        get
        {
            return ConfigurationManager.AppSettings["ConnectionString"];
        }
    }

    /// <summary>
    /// 重载VerifyRenderingInServerForm方法
    /// 确认在运行时为指定的 ASP.NET 服务器控件呈现 HtmlForm 控件。
    /// </summary>
    /// <param name="control">ASP.NET 服务器控件,它必须位于 HtmlForm 控件中</param>
    public override void VerifyRenderingInServerForm(Control control)
    {
        //base.VerifyRenderingInServerForm(control);
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindData();
        }
    }

    /// <summary>
    /// 绑定数据
    /// </summary>
    public void BindData()
    {
        // 查询
        string query = "SELECT * FROM Categories";
        SqlConnection myConnection = new SqlConnection(ConnectString);
        SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
        DataSet ds = new DataSet();
        ad.Fill(ds, "Categories");
        GridView1.DataSource = ds;
        GridView1.DataBind();
    }

    /// <summary>
    /// 内存分页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Paging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        BindData();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "GB2312";
        Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
        //gaoyang [10/21/2006] 经测试如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。
        Response.ContentEncoding = System.Text.Encoding.UTF7;

        //设置输出文件类型为excel文件。 
        Response.ContentType = "application/ms-excel";
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        this.GridView1.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());
        Response.Flush();
        Response.End();
    }
}

本文转自

高阳 51CTO博客,原文链接:http://blog.51cto.com/xiaoyinnet/196546 ,如需转载请自行联系原作者

在VS2005中 GridView导入Excel的两点小技巧-附源码相关推荐

  1. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  2. JavaScript|免费导入题库,考试复习工具,刷题神器,支持导入excel题库【完全免费+提供源码】

    工具界面展示 点击这里下载源代码↓↓↓ 基于JS的导入EXCEL题库复习小工具_intitle:javascript搜题-Javascript文档类资源-CSDN下载 目录 一.工具使用说明 二.界面 ...

  3. Java-Excel导入导出通用实现Demo(附源码Git地址)

    说明:本工具适用大部分导入导出场景,花点时间搞懂怎么用了之后灰常方便,阅读本文前,建议下载源码后参考着阅读.源码地址:https://gitee.com/xwzhang1/excel-util.git ...

  4. Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载)

    场景 Winform中实现ZedGraph中曲线右键显示为中文: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292 ...

  5. Winform中实现ZedGraph的多条Y轴(附源码下载)

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  6. 二值图像中封闭孔洞的高效填充算法(附源码)。

    写具体类容之前先吐槽一下. 我一直写技术文档,虽然水平不怎么样,但是基本上我写的都还是比较实际的东西,也是自己投入了很多精力做的东西.有些可能没有开源,有些人觉得对他没有什么帮助,而我认为真正做技术的 ...

  7. vue项目中集成腾讯TIM即时通讯(附源码)

    上图 前言 项目需要做个客服功能,用户端小程序,客服人员web端,于是用到了腾讯的tim 准备工作 在腾讯云官网上创建应用,获取到相应的SDKAppID和相应的秘钥信息 安装SDK (1) web项目 ...

  8. python机器学习之基于内容的推荐算法中推荐麻辣香锅菜品实战(附源码)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 推荐算法相信大家都不陌生,日常生活的各种APP都会根据你的喜好和特征来给你推荐,接下来详细介绍一下其中的基于内容的推荐算法 基于内容的模式起源于信 ...

  9. Android Studio App开发之使用摄像机录制视频和从视频库中选取视频的讲解及实战(附源码)

    运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.使用摄像机录制视频 与音频类似,通过系统摄像机可以很方便的录制视频,只要指定摄像动作为MediaStore.ACTION_VIDEO_CAPT ...

最新文章

  1. 兄弟们,TechEd见!
  2. GT Transceiver中的重要时钟及其关系(5)QPLL的工作原理介绍
  3. 自学python数据分析要多久-如果只有1小时学Python,看这篇就够了
  4. CSS 七层叠层顺序(stacking level)
  5. install ADT plugin
  6. 【华为云技术分享】容易造成单片机内存溢出的几个陷阱
  7. gradle构建java实例_Gradle构建Java应用程序
  8. 中兴F803/804 ONU实现端口间计算名(基于netbios协议)互通
  9. 分享一个在线生成接口文档工具
  10. 录屏并制作动图gif的方法
  11. C语言--fseek()
  12. 计算机网络教程第五版|微课版 - 第一章 概述 - 重点概念
  13. 阿里云服务器中目录的简单介绍及简单使用
  14. c语言函数fac,将一个求阶乘的函数fac专门写在一个文件file1.cpp中,定义为外部函数。然后在另一文件file2.cpp中...
  15. mongo执行逻辑表达式_Mongo学习记录
  16. erdas空间建模_ERDAS空间建模工具介绍.ppt
  17. 树莓派-实时视频监控
  18. HOU211学习总结
  19. C语言------函数
  20. “网络状态变成一条虚线”的解决办法(右下角网络图标突然消失情况)

热门文章

  1. go微服务框架go-micro深度学习(五) stream 调用过程详解
  2. SQL连接查询和嵌套查询详解
  3. TensorRT学习笔记(三)
  4. nginx禁止未绑定域名访问返回444
  5. RTP:实时应用程序传输协议
  6. 家长会:我的发言稿,女儿的信
  7. 分享Intel的安全运营中心最佳实践
  8. 如何设置SQL Server 全文搜索
  9. 用dw中html设置背景,Dreamweaver 教程-CSS背景属性(background)
  10. Git 远程仓库分支管理