通过Response输出方式导出Excel

目前见过这么几种类型的导出Excel表:

1,NPIO方式,高仿Java.功能比较强大,但是比较重。

2, 前辈封装的。。。。

3,本文要说的。。

  这周五又要导个Excel表,,上面估计是觉得平台封装的导出比较重吧,要我用response方式导出excel表,一个字,没用过。还好上过百度大学~

 /// <summary>
        /// 获取表的标头
        /// </summary>
        /// <param name="caption">The caption.</param>
        /// <returns>System.String.</returns>
        /// <remarks>Editor:v-liuhch CreateTime:2015/5/30 19:44:44</remarks>
        private string GetHeaderName(string caption)
        {
            string headName = string.Empty;
            switch (caption)
            {
                case "SerialNo":
                    headName = "SN码";
                    break;
                case "PrizeName":
                    headName = "奖品名称";
                    break;
                case "TelPhone":
                    headName = "领取电话 ";
                    break;
                case "NickName":
                    headName = "姓名";
                    break;
                case "AwardingTime":
                    headName = "领取时间";
                    break;
                case "OkPrizeTime":
                    headName = "抽中时间";
                    break;
                default:
                    headName = " ";
                    break;
            }
            return headName;
        }

上面一段是获取列标题的。

接着是导出的过程:

  private void ExportSN(HttpContext context)
        {
            string accode = context.Request.QueryString["accode"];
            HttpResponse response = context.Response;
            string fileName = "SN码导出表-" + DateTime.Now.ToShortDateString();
            excelHeader = string.Empty;
            excelContent = string.Empty;

            DataTable dt = PrizeAdapter.Instance.SnManagerData(accode);//获取数据源
            DataRow[] dr = dt.Select();
            int colCount = dt.Columns.Count;
            string headName = string.Empty;

            //行标题
            for (int i = 0; i < colCount; i++)
            {
                headName = GetHeaderName(dt.Columns[i].Caption);
                if (i == colCount - 1)
                {
                    excelHeader += headName + "\n";
                }
                else
                {
                    excelHeader += headName + "\t";
                }
            }

            //行数据
            foreach (DataRow row in dt.Rows)
            {
                for (int i = 0; i < colCount; i++)
                {
                    if (i == colCount - 1)
                    {
                        excelContent += row[i].ToString() + "\n";
                    }
                    else
                    {
                        excelContent += row[i].ToString() + "\t";
                    }
                }

            }

           // ExportGotPrizeSn(context);

            response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            response.ContentType = "application/vnd.ms-excel";
            response.AppendHeader("Content-Disposition", "attachment; filename=test.xls");
            response.Write(excelHeader);
            response.Write(excelContent);
            response.Flush();
            response.End();

        }

这里要注意指定的contenttype.

但是始终有一个历史遗留问题搞不定:

打开导出的Excel表的时候始终提示:

有人说还是代码写的有问题,也有人说是Office的问题。。。。

跪求路过大神指点~~~~~~··

时间: 2024-08-26 03:14:31

通过Response输出方式导出Excel的相关文章

springMVC中使用POI方式导出excel至客户端、服务器实例

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 这里的方法支持导出excel至项目所在服务器,或导出至客户端浏览器供用户下载,下面我把两个实例都放出来. 1.下载所需POI的jar包,并导入项目. 2.添加一个User类,用于存放用户实体,类中内容如下: 1 package com.mvc.po; 2 3 public class User { 4 private int id; 5 priva

Response输出excel设置文本样式

在网上查了些Response导出excel然后设置样式的方法,发现没有一个可行的于是开始自己研究, 发现可以通过输出样式的方式进行配置,我要设置的是全文本格式在excel样式是这样的mso-number-format:"\@" 于是我对Response输出进行了完善 Response.Clear(); Response.BufferOutput = true; string style = "<style> td{ mso-number-format:\"

采用Post请求的方式提交参数并导出excel

一般情况下,我们都是采用get请求的方式导出excel.例如采用如下方式: var exportUrl = '/xxx;'; window.open(exportUrl); 导出excel所需的逻辑参数拼接到url上即可. 但是,如果我们需要提交大量的参数到后台才能导出excel, 亦或者我们提交的参数中有中文,get提交乱码了,那么就可能想使用post提交的方式来导出excel.因为post提交支持更多的参数,从而能解决get提交对url长度的限制问题. 然而,一般的post提交表单,意味着主

jsp(servlet)使用poi导出excel数据文件

网站通过Excel导出数据已经成为各种网站的一个基本功能,下面就详细介绍下如何使用poi.jar方式来导出excel文件.具体步骤如下: 1.创建一个网站,下面我创建一个叫test的网站,然后将poi的jar包放入lib文件夹.我这里是下载链接poi-2.5.1.jar. 结构目录如下: 2.然后我们可以创建一个用来访问的jsp界面(主要是提交到servlet,可有可无) 代码如下: <%@ page language="java" import="java.util.

.net导出Excel

protected void btnPrint_Click(object sender, EventArgs e) { DataTable dt = DbHelperSQL.GetTable("select b.ProNumber as 产品编号,b.Name as 产品名称,b.kucun as 剩余库存,b.Price as 产品价格,a.buynum as 购买数量,(b.price*a.buynum) as 合计金额 from shopcar as a,Product as b wher

NPOI根据模板导出Excel

上篇讲到使用Office Com组件的方式导出Excel,本篇讲一种个人认为更普遍的方式:NPOI,它无需服务器上安装Office,如果玩NPOI比较熟的话,个人更推荐使用这种方式. 本篇将介绍基本的导出Excel的方法,和合并单元格,设置单元格样式和如何插入图片等. 1.添加对NPOI.dll的引用,引入命名空间: 1 using NPOI; 2 using NPOI.HPSF; 3 using NPOI.HSSF.UserModel; 4 using NPOI.POIFS.FileSyste

分针网——每日分享:nodejs导出excel实战

本文转载:http://www.f-z.cn/id/268 我们都知道nodejs的内存由于v8内存分配机制的原因十分有限 64位系统也只能占1.4G左右, 因此当我们要生成或者读取大文件的时候内存的吃紧会给我们造成极大的困扰, 遇到这样的情况Node给了我们一个很好的解决方法 stream 简单的了解一下流 流是数据的集合 -- 就像数组或字符串一样.区别在于流中的数据可能不会立刻就全部可用,并且你无需一次性地把这些数据全部放入内存.这使得流在操作大量数据或是数据从外部来源逐段发送过来的时候变

ASP.net中导出Excel的简单方法介绍

下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat="server" style="width: 700px; margin-left: auto; margin-right: auto;"> <!--startprint--> <table width="100%" border=&

导出excel时,以form方式提交json数据

今天在写项目时写到一个excel的导出,开始想用ajax请求后台后导出,但发现ajax会有返回值,而且ajax无法直接输出文件,而后台的excel导出方法已经封装好,不方便修改. 就改用了提交的方式form,但form提交,表格分页用的是jquerytable,我需要将一些jquerytable的一些参数传到后台,但这些数据已经是json数据,如果我直接放在input中提交到后台在解析参数会很麻烦,所以就想将json数据转为form方式提交. js //导出 function exportExc