npoi生成excel流并在客户端下载(html+后台 )
//前端页面
<body>
<input type="button" value="导出Excel" class="button" id="btnjbntExport" runat="server" onclick="Exportjbnt()"/>
<table class="table">
<thead>
<th colspan="3">基本农田保护区面积统计表(公顷)</th>
</thead>
<tbody>
<tr>
<td>基本农田占用总面积</td>
<td id="JBNTZMJ">0.00</td>
</tr> </tbody> </table>
<form id="jbntform" action="./GisUtility/GeometryHelper.ashx" method="post"> //用js操作文件流,所以用form的post方法是一个不错的选择
<input type="hidden" id="jbntarea" name="jbntarea" />//传递参数到后台
<input type="hidden" id="jbnttype" name="jbnttype" />
</form>
</body>
//加载前端面前先加载包涵下面方法的js文件
function Exportjbnt() {
var area = GetJbntValue();
$("#jbnttype").val("exportjbnt");
$("#jbntarea").val(area);
$("#jbntform").submit();
}
function GetJbntValue() {
var areavalue = $("#JBNTZMJ").html();
return areavalue;
}
//GeometryHelper.ashx中的后台方法
if (context.Request.Form["jbnttype"] == "exportjbnt")//导出基本农田表格到excel
{
string area = context.Request.Params["jbntarea"];
string tile = "基本农田保护区面积统计表(公顷)";
pGeoJson= CommUtility.ExportJbnt2Excel(tile,area); }
//创建excel
public static string ExportJbnt2Excel(string Exceltitle, string area)
{
//创建工作薄
HSSFWorkbook wk = new HSSFWorkbook();
//创建一个名称为Sheet1的表
ISheet tb = wk.CreateSheet();
wk.SetSheetName(,"Sheet1");
for (int i = ; i < ; i++)
{
ICellStyle cellStyle = SetCellStyle(wk, i);
IRow row = tb.CreateRow(i);
for (int j = ; j < ; j++)
{
ICell cell = row.CreateCell(j);
cell.CellStyle = cellStyle;
} } MergeCell(tb, tb.GetRow().GetCell(), , , , , Exceltitle);
MergeCell(tb, tb.GetRow().GetCell(), , , , , "基本农田占用总面积");
MergeCell(tb,tb.GetRow().GetCell(),,,,,area); MemoryStream mstream = new MemoryStream();
wk.Write(mstream);
DownloadFile(mstream, Exceltitle);
return null;
}
//在客户端保存或查看用流生成的excel文件
public static string DownloadFile(MemoryStream fs, string filename)//必须为FileStream或MemoryStream ,如果用Stream则生成的excel无法正常打开{
string fileName = filename+".xls";//客户端保存的文件名 //以字符流的形式下载文件
byte[] bytes = fs.ToArray(); fs.Read(bytes, , bytes.Length); fs.Close();
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream"; //通知浏览器下载文件而不是打开
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Transfer-Encoding", "binary"); System.Web.HttpContext.Current.Response.BinaryWrite(bytes);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
return null; }
npoi生成excel流并在客户端下载(html+后台 )的更多相关文章
- .net利用NPOI生成excel文件
整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过.这个是一个完整的过程. 首先是已经查找好的数据,这 ...
- Aspose.Cell和NPOI生成Excel文件
1.使用Aspose.Cell生成Excel文件,Aspose.Cell是.NET组件控件,不依赖COM组件 1首先一点需要使用新建好的空Excel文件做模板,否则容易产生一个多出的警告Sheet 1 ...
- 使用NPOI生成Excel级联列表
目录 1 概要 1 2 磨刀不误砍柴工——先学会Excel中的操作 2 3 利用NPOI生成导入模板 7 3.1 设置workbook&sheet ...
- NPOI生成excel并下载
NPOI文件下载地址:http://npoi.codeplex.com/ 将文件直接引用至项目中即可,,,,, 虽然网上资料很多,但有可能并找不到自己想要的功能,今天闲的没事,所以就稍微整理了一个简单 ...
- NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)
NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...
- C#生成Excel保存到服务器端并下载
using MongoDB.Bson; using Newtonsoft.Json.Linq; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; ...
- NPOI 生成 Excel
前言 在 c# 中可以使用对应的com组件生成或操作excel,但前提是必须安装了Office Excel , 但服务器端不一定会安装Excel,而且它操作起来并不简单.但是,使用NPOI这个第三 ...
- Aspose.Cell和NPOI生成Excel文件2
NPOI还是比较好用的,引用dll程序集即可 1创建workbook和工作流 HSSFWorkbook workbook = new HSSFWorkbook(); MemoryStream ms = ...
- NPOI 生成 excel基本设置
//设置页眉页脚 tempSheet.Header.Center = "2017-04-27"; tempSheet.Footer.Center = "√" + ...
随机推荐
- Linux多线程实践(9) --简单线程池的设计与实现
线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收.所以 ...
- 自定义仪表盘PaneView
1.概述 最近学习自定义View,趁着周末做了一个仪表盘练练手,效果还可以,在此分享一下先上效果图(截图有点不清晰,凑合着看下吧) 项目在我的github上https://github.com/xsf ...
- Bookmarkable Pages
Build a Bookmarkable Edit Page with JDeveloper 11g Purpose In this tutorial, you use Oracle JDevel ...
- ERP-非财务人员的财务培训教(一.二)------财务基础知识
二.基本财务管理知识 第一节 财务管理基础知识(一) 财务与会计的关系 会计的基础知识 (一) 财务与会计的关系 财务与会计的内涵 1.会计 会计工作主要是解决三个环节的问题: 会计凭证 会计账簿 会 ...
- Oracle EBS订单的流程(Order->AR)
from:http://blog.csdn.net/pan_tian/article/details/7693447 基本流程 创建订单 路径:Order Management > Orders ...
- Erlang cowboy websocket 服务器
Erlang cowboy websocket 服务器 原文见于: http://marcelog.github.io/articles/erlang_websocket_server_cowboy_ ...
- TCP的核心系列 — SACK和DSACK的实现(七)
我们发送重传包时,重传包也可能丢失,如果没有检查重传包是否丢失的机制,那么只能依靠超时来恢复了. 37版本把检查重传包是否丢失的部分独立出来,这就是tcp_mark_lost_retrans(). 在 ...
- 【34】包含min函数的stack
题目: 实现一个包含min函数的栈,min和push,pop都是o(1)时间 思路: 采用一个辅助的栈,来存储不同阶段的最小值 - 代码: push(int value){ //data是数据栈,mi ...
- android studio设置代理更新
我们都知道Android Studio是基于IDEA开发的,而我们写的每一个程序又都是有Gradle构建的,Gradle的优点可以说是很多,被很多程序员夸得没边,但是它有一个特点还是值得我们注意的.我 ...
- 如何在os x或ubuntu下安装最新的ruby
os x下基本上可以安装到比较新的ruby,首先先安装rvm,然后用rvm list known看当前可供安装的ruby的版本,不过这也不是绝对的,比如在我的os x 10.9上,命令返回如下: # ...