上网查了很多方法,可是没有一个方法我测试成功的,然后我就用了一个比较笨但是还算可以用的方法。就是直接将服务器端文件路劲传到前台,用javascript设置a标签的href属性值,然后触发a标签的click事件,让其下载。

1)首先将dataset转换为excel文件,代码如下:

writeToExcel(){
/*
* *
* 将数据存储到datatable中便于导出到excel中,
* 我的数据是从sqlserver中取出来,存入到excel表中,然后存入到服务器端
*/
DateTime dayStart = Convert.ToDateTime( start + " " + starthour );
DateTime dayEnd = Convert.ToDateTime( end + " " + endhour );

//链接字符串,可以直接写,我这里是从web.config中取出来的
string strConn = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;

string strsql = "你的sql字符串";//sql语句
using (SqlConnection conn = new SqlConnection(strConn))
{
using (SqlCommand cmd = new SqlCommand( strsql, conn ))
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
WenshuExl ws = new WenshuExl();//WenshuExl是自己定义的一个类,里面有下面的一些属性

ws.属性1 = reader.GetValue( 0 ).ToString();
ws.属性2 = reader.GetValue( 1 ).ToString();
ws.属性3 = reader.GetValue( 2 ).ToString();
ws.属性4 = reader.GetValue(3).ToString();
ws.属性5 = reader.GetValue( 4 ).ToString();

wenshu.Add(ws);
}
reader.Close();
}
}

DataTable dt = new DataTable();
//对应属性增加excel表格中的头到datatable中
dt.Columns.Add( "属性1", Type.GetType( "System.String" ) );
dt.Columns.Add( "属性2", Type.GetType( "System.String" ) );
dt.Columns.Add( "属性3", Type.GetType( "System.String" ) );
dt.Columns.Add( "属性4", Type.GetType( "System.String" ) );
dt.Columns.Add( "属性5", Type.GetType( "System.String" ) );

//添加每一行数据到datatable中
if (wenshu.Count > 0)
{
var i = 0;
foreach (var item in wenshu)
{
i++;
DataRow dr = dt.NewRow();
dr["属性1"] = item.属性1;
dr["属性2"] = item.属性2;
dr["属性3"] = item.属性3;
dr["属性4"] = item.属性4;
dr["属性5"] = item.属性5;

dt.Rows.Add( dr );
}

}
wenshu.Clear();

int rnum = dt.Rows.Count;//导出数据的行数
int cnum = dt.Columns.Count;//导出数据的列数
string diretory = Server.MapPath( "\\" ) + "OutFiles\\wenshuExl";
System.IO.Directory.CreateDirectory( diretory );//创建目录
string filename = Server.MapPath( "\\" + "OutFiles\\wenshuExl\\" ) + (DateTime.Now.ToString( "yyyyMMdd" ) + DateTime.Now.ToLongTimeString() + DateTime.Now.Millisecond.ToString()).Replace( ":", "" ) + ".xls";
string tempfile = filename;
string[] arrfile = tempfile.Split('\\');
string filepath = "/OutFiles/wenshuExl/" + arrfile[arrfile.Length-1];//得到项目当前的文件夹路劲

object missing = System.Reflection.Missing.Value;

//新建excel工作簿
Excel.Application excel = new Excel.Application();
Excel.Workbook work = excel.Workbooks.Add( true );
Excel.Worksheet wsh = (Excel.Worksheet)work.Worksheets[1];

int rowindex = 1;
int colindex = 0;
//打印title
foreach (DataColumn col in dt.Columns)
{
colindex++;
excel.Cells[1, colindex] = col.ColumnName;

}

//打印data
foreach (DataRow row in dt.Rows)
{
rowindex++;
colindex = 0;
foreach (DataColumn col in dt.Columns)
{
colindex++;
excel.Cells[rowindex, colindex] = row[col.ColumnName].ToString();
}
}
excel.DisplayAlerts = false;//不显示更改提示
excel.Visible = false;//让后台设置为不可见,为true的话会看到打开一个excel,然后数据在往里写
excel.AlertBeforeOverwriting = false;//禁止弹出覆盖的询问提示框
wsh.Columns.EntireColumn.AutoFit();

try
{
excel.ActiveWorkbook.SaveCopyAs( filename );
}
catch (Exception ex)
{
return "导出失败:" + ex.Message;
}
finally
{
excel.Quit();
excel = null;
System.GC.Collect();

}

return filepath;//将值返回到前台
}


2)前台代码:

<a href="" style=" display:none;" id="download"></a>

js代码:

$(function () {
            $.post(
                "/类名/writeToExcel",
                {
                    属性:属性值
                },
                function (data) {
                    if (data.indexOf("/") >= 0) {
                        var filename = data;
                        $("#download").attr('href', filename);//将后台excel文件路径赋值给a标签的href

//绑定单击事件
                        $("#download").click(function () {
                            window.open($(this).attr("href"));
                        });

//触发单击事件
                        $("#download").click();

} else {
                        alert(data);
                    }
                });
        });

火狐效果:


chrom效果:

C#将服务器端excel文件下载到客户端的简单方法相关推荐

  1. Excel逻辑函数:如何实现Excel条件智能标记,简单方法,速学!

    学习是永无止境的,不管是上班还是上学,都是一个学习的过程,至于在这个过程中,你学的多少,学的怎样,这就是你自己的事情了,不管是你的老师,还是你的上级,都是起到一个领路的作用,你肯不肯下功夫,也只有你自 ...

  2. 如何将Excel首列冻结?简单方法!Excel怎样操作把首列冻结?

    Excel是一款表格文档软件,我们在工作中会经常使用其来记录部分数据内容信息,在我们记录内容数据信息的时候难免需要进行数据分类,我们在首列进行数据类目的分别,但是在表格后面就看不到首列数据目录,出现这 ...

  3. 新建服务器显示8080被占用,快速解决eclipse/myeclipse下的tomcat服务器端口号8080被占用的简单方法...

    使用过tomcat服务器的人都会不可避免的遇到tomcat端口号被占用的情况.tomcat端口号被占用造成的原因很多,但本文只是针对由于打开多个版本的eclipse/myeclipse或者是tomca ...

  4. (原创)datagrid数据导出到excel文件给客户端下载的几种方法

    方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1.可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载. 2.也是因为生成了文件,所以占用 ...

  5. datagrid数据导出到excel文件给客户端下载的几种方法

    新做项目客户要求把数据倒入到EXCEL中,在网上查询到如下方法,我用的第二种方法,非常不错,贴上供大家分享: 方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1.可以进行身份 ...

  6. 数据导出到excel文件给客户端下载的几种方法

    (原创)datagrid数据导出到excel文件给客户端下载的几种方法 看到这个觉得这个人很厉害,mvp啊. 我就改成这个样子了.  Response.Clear();         Respons ...

  7. poi导出Excel文件下载数据

    poi导出Excel文件下载数据 poi上传Excel文件批量的添加数据 : https://blog.csdn.net/kangshifu007/article/details/103149764 ...

  8. vue如何配置服务器端跨域_客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解...

    本篇博客主要说明: 前后端框架(本例中是vue和koa)如何发送请求?获取响应? 以及跨域问题如何解决? vue部分: import App from './App.vue' import Axios ...

  9. 如何让服务器端持续监听客户端的请求?

    前面的程序,不管服务器端还是客户端,都有一个问题,就是处理完一个请求立即退出了,没有太大的实际意义.能不能像Web服务器那样一直接受客户端的请求呢?能,使用 while 循环即可. 修改前面的回声程序 ...

最新文章

  1. 【OpenCV 4开发详解】圆形检测
  2. python 文件路径_「按需学Python」 1. Glob库遍历路径/文件
  3. java 禁止使用多线程_Java多线程(四)-线程状态的转换 - Java 技术驿站-Java 技术驿站...
  4. android sqlitejian监听,tencent/sqlite.md · zhoujian/AndroidInterView - Gitee.com
  5. 抢人饭碗了!推荐一款全自动的机器学习建模神器PyCaret
  6. IDEA中使用Maven构建SSM项目
  7. 回顾微软近年来对于Linux和开源的策略
  8. 布尔运算_3dmax教程 - 布尔运算
  9. JavaScript-操作DOM对象-更新dom节点
  10. python3.6安装步骤-手动安装python3.6的操作过程详解
  11. node-amqp 使用fanout发布订阅rabbitmq消息
  12. libav的avplay修改支持sdl2.0
  13. python花瓣飘零_Python 爬虫: 抓取花瓣网图片
  14. Java区块链视频教程百度云_区块链开发入门到精通视频教程
  15. Winform/C#入门编程之第三部分容器(四:缩放控件SplitContainer)
  16. php图片镜像翻转,怎么把视频镜面翻转/视频水平翻转的教程
  17. 基于WxPython的批量图片缩放工具
  18. 基于HTML5的在线绘图工具,基于HTML5 Canvas和jQuery 的绘图工具的实现
  19. 今天又接到了交通罚单
  20. 汽车变速系统的换挡律

热门文章

  1. 简单的HTTP代理服务器的实现(基本功能+拓展功能)
  2. stm32 c语言内联函数,【实战经验】STM32F3xx/STM32F4xx使用浮点开方指令
  3. 牛客网软通动力软件测试机试_软通动力软件测试笔试题
  4. i710700f和i512400f区别 i7 10700f和i5 12400f选哪个好
  5. php如何设置iis,如何在IIS中配置PHP,让IIS支持PHP的运行环境
  6. 54欧氏空间01——内积与欧氏空间、Cauchy-Schwarz不等式、度量矩阵
  7. DHT11型温湿度传感器的使用(附源码)
  8. 微软浏览器: 12月份浏览器市场份额 微软IE再下滑1.6%
  9. 计算机游戏2018,2018电脑离线游戏排行榜……
  10. Android 应用系统签名