• 简单实现网页另存为word或者excel


        最近在弄网页的导出,在网上找了很多的方法,最后用一种较为简单的方法实现,这次的寻找和解决问题的过程使我加深了对封装和面向对对象的理解更加深刻!在B/S阶段,有很多已经封装好的类,而且在所有的页面都是一个个的类,只是我们使用的太频繁,也是不联系在一起忽视了他们!比如今天的问题,其实就是对io类的一个使用!

    首先:我们在我们的页面层要添加一个属性:

    <%@ PageLanguage="C#" AutoEventWireup="true"CodeBehind="printPage.aspx.csEnableEventValidation="false" Inherits="ExamSystemV3.Web.Student.printPage" %>

    里将EnableEventValidation值设置为false主要是避免导出页面时进行安全验证,让其保证导出的顺利进行!


    然后我们在页面后台添加一个方法:


     

            public void ExpertControl(System.Web.UI.Control source, DocumentType type)
            {
                //设置Http的头信息,编码格式
                if (type == DocumentType.Excel)
                {
                    //Excel
                    Response.AppendHeader("Content-Disposition", "attachment;filename=result.xls");
                    Response.ContentType = "application/ms-excel";
                }
                else if (type == DocumentType.Word)
                {
                    //Word
                    Response.AppendHeader("Content-Disposition", "attachment;filename=result.doc");
                    Response.ContentType = "application/ms-word";
                }
    	//指定编码格式——utf-8是网页默认格式,word出现乱码是因为它的默认格式不是utf-8是gb2312
                Response.Charset = "utf-8";
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
                //关闭控件的视图状态
                source.Page.EnableViewState = false;
                //初始化HtmlWriter
                System.IO.StringWriter writer = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
                source.RenderControl(htmlWriter);
                //输出
                Response.Write(writer.ToString());
                Response.End();
            }
            //文档类型枚举
            public enum DocumentType
            {
                Word,
                Excel
            }
    



    最后,在使用的时候调用:

    例如:我们增加了一个导出的按钮:

     

            protected void Button1_Click(object sender, EventArgs e)
            {
    
                ExpertControl(this, DocumentType.Word);
    
    
            }

    这个简单例子的解决是一种积累,主要解决了我们不知道的问题,让我们意识到自己哪些问题,该去找哪些类!在面向对象的今天,我们的解决思路,也许仅仅是,知道多一点!了解多一点!然后上网查!最后是熟悉和掌握!

  • 相关阅读:
    存储过程拆分字符窜
    jquery学习
    Sql常用语法
    存储过程分页
    asp.net 定时执行程序
    C# 多线程并发处理数据库数据,发送信号等待处理完统一插入.(转)
    (转)CAS 单点登录安装笔记4
    C# 自动退出当前程序,然后再启动
    给自己的Web文件夹增加一个图片或其它文件认证
    Setting NTFS Permissions with C#
  • 原文地址:https://www.cnblogs.com/pangblog/p/3424019.html
Copyright © 2020-2023  润新知