.net生成Excel,并下载

生成Excel的方式有很多种,这里记录两个最简单的:

1.将数据保存为html,然后输出到客户端,保存为Excel文件;

2.通过\t\n生成字符串,然后输出到客户端,保存为Excel。

以上两者的原理都是一致的,只是生成的字符串长相不一致而已。我这里使用的是mvc,所以要下载的话,直接生成一个超链接指向当前这个生成文件的Action,用Ajax好像没办法,但是如果当前这个超链接只是请求一个文件,页面也不会刷新,比如一个按钮点击事件:直接windows.location.href="/control/action",如此就可以直接下载,当前页面也不会刷新。

先上共有的代码:

HttpResponseBase resp= HttpContext.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置编码格式,防止中文乱码
resp.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("月报表.xls",Encoding.UTF8));//解决生成的文件名中文乱码
resp.ContentType = "application/ms-excel";

然后是生成数据的过程,这里就分为两种:

1.生成table的html

这里需要获取数据库的数据,然后按自己要的格式生成table,可以对table设置样式之类的,所有对table设置的样式,将会影响生成的Excel,同样可以给table加表头,当然table外面要不要加那些<html>、<body>这些,都不重要,可加可不加,示例如下:

<table border=‘1‘>//设置border=1则生成的表格会有黑色表框
  <tr>
      <td>1</td><td>2</td><td>3</td><td>4</td>
  </tr>
</table>

2.通过\t\n控制Excel样式

在这里,每加一个\t就会生成Excel中的一格,每加一个\n就会换行,这就是原理,所以大家可以拿到数据之后,对数据列表循环,每个数据item是一行

每列数据对应插入到Excel中的一格,示例如下:

foreach (var item in list)
{
    ls_item += item.agentName + "\t";
    ls_item += item.tourNo + "\t";
    ls_item += item.travelerName + "\t";
    ls_item += item.checkinDate + "\t";
    ls_item += item.checkoutDate + "\t";
    ls_item += item.rooms + "\t";
    ls_item += item.nights + "\t";
    ls_item += item.RoomPrice + "\t";
    ls_item += item.minorTotal + "\t\n";//最后加个\n换行
}

以上代码为数据填充的部分,接下来就是将数据输出到客户端,只要两句话:

resp.Write(内容的字符串);
resp.End();

以上就是生成Excel的方法,当然这里是直接输出到客户端,所以没有生成多余的文件在服务器,如果非要生成文件在服务器,然后提供链接给客户端下载,其实就是将数据用文件流输出,保存为文件,然后将生成的文件路径返回给客户端,然后让客户端来请求这个文件路径,就能够下载了,示例如下:

   StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312"));
   sw.Write(str);//保存文件
   sw.Close();
   return Content("../DownLoad/file.xls");//不要忘了后缀.xls

生成word文件,方法也是一样的,只是有某些小地方需要修改:

resp.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode("file.doc", Encoding.UTF8));//后缀为doc
resp.ContentType = "application/msword";//文件内容为msword

其他都一致了。

当然生成这些文件的方法还有很多种,这里说的应该是最简单的一种。

时间: 2024-08-28 21:01:51

.net生成Excel,并下载的相关文章

使用node.js生成excel报表下载(excel-export express篇)

引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种com组件贴心使用. nodejs作为一门新的语言,报表功能也不是十分完善. (1).js-xlsx : 目前 Github 上 star 数量最多的处理 Excel 的库,支持解析多种格式表格XLSX / XLSM / XLSB / XLS / CSV,解析采用纯js实现,写入需要依赖nodejs

NPOI生成excel并下载

NPIO文件下载地址:http://npoi.codeplex.com/ 将文件直接引用至项目中即可,,,,, 虽然网上资料很多,但有可能并找不到自己想要的功能,今天闲的没事,所以就稍微整理了一个简单的例子,希望自己在以后的项目中用得着,到时候就不用在网上查找了,直接把代码copy过来就可以啦~~~~主要是在mvc控制器里面敲的,直接贴代码了..... 1.逻辑代码 public EmptyResult ExportExcle() { HSSFCellStyle style; HSSFFont

记一次服务器生成Excel在客户端下载的案例

今天加盟部校长说做一个用户数据收集并导出Excel文件的小网页,主要便于查看客户信息,前期一切顺利,就在生成Excel和下载的时候出现了问题,收集了一些资料,有人说用NPOI插件,这个可行,我在网上收集了资料,没有使用插件做了一个简单的Excel生成器,话不多少代码如下: 首先在服务类中 //导出Excel        /// <summary>        /// DataTable导出到Excel        /// </summary>        /// <p

PHP导出生成Excel文件

PHP导出生成Excel首先需要下载安装office扩展 可以自行下载,也可以通过composer下载安装 个人比较建议后者 代码很简单  不废话直接上代码 /** * @param $file_name String 文件名称 * @param $title String 标题 * @param $order String 中文的表格序以逗号方式连接 * @param $data array 数据集 * @param $data_order String 数据集合key以逗号的方式连接 */

java生成excel表格和pdf并实现下载弹出框

今天在pdf和excel中都实现了在浏览器弹出下载框 将之前在网上查找的生成excel表格代码稍微修改下: public class CreateSimpleExcelToDisk { /** * @功能:手工构建一个简单格式的Excel */ private static List<News> getNews() throws Exception { List<News> data = new ArrayList<News>(); NewsDao dao = new

Java学习之道:Java上传下载excel、解析Excel、生成Excel的问题

在软件开发过程中难免需要批量上传与下载,生成报表保存也是常有之事,最近集团门户开发用到了Excel模版下载,Excel生成,圆满完成,对这一知识点进行整理,资源共享,有不足之处还望批评指正,文章结尾提供了所需jar包的下载,方便大伙使用,下面言归正传! 1.Excel的下载 1)Action中: 添加响应事件,通过getRealPath获得工程路径,与jsp中获得request.getContextPath()效果相同,fileName为要下载的文件名,经过拼接filePath是xls文件的绝对

SpringMVC在内存中直接生成Excel让用户在浏览器中直接下载使用

1. 如何查询出数据库的SCHEMA, 这里贴出核心的SQL语句 SELECT COLUMN_NAME AS field, COLUMN_COMMENT AS comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ? 由于注释有的会很长, 全部取出来作为excel的一格, 会很不好, 其实我们只是需要重要的意思, 所以, 这里前提条件就是将注释用分隔符分开 例如: name=>名称: 用户昵称, 这里我就可以用":"

MVC +NPOI+AJAX 查询并生成excel 下载

Controller 代码: public class SubArea2STIReportController : BaseController { [ActionDescription("分区2STI查询")] public ActionResult Index() { var vm = CreateVM<SubArea2STIReportVM>(); return PartialView(vm); } [HttpPost] [ActionDescription(&quo

Java上传下载excel、解析Excel、生成Excel

在软件开发过程中难免需要批量上传与下载,生成报表保存也是常有之事,最近集团门户开发用到了Excel模版下载,Excel生成,圆满完成,对这一知识点进行整理,资源共享,有不足之处还望批评指正,文章结尾提供了所需jar包的下载,方便大伙使用,下面言归正传! 1.Excel的下载 1)Action中: 添加响应事件,通过getRealPath获得工程路径,与jsp中获得request.getContextPath()效果相同,fileName为要下载的文件名,经过拼接filePath是xls文件的绝对