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 = "√" + ...
随机推荐
- 【翻译】如何创建Ext JS暗黑主题之二
原文:How to Create a Dark Ext JS Theme– Part 2 我已经展示了如何去开发一个精致的暗黑主题,看起来就像Spotify.在本文的第一部分,了解了Fashion.S ...
- 【一天一道LeetCode】#69. Sqrt(x)
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Impleme ...
- 多态 OC——第十天
1.多态 父类指针指向子类对象 没有继承就没有多态 联系前面知识才能清楚什么是多态,所以放到最后面总结小知识点,有前面的知识会对多态更好的了解,会觉得简单很多,但是看此篇博文需要 ...
- 关于JavaScript中的几种匿名行数的写法
匿名函数没有实际名字,也没有指针,怎么执行滴? 其实大家可以看看小括号的意义就应该可以理解.小括号有返回值,也就是小括号内的函数或者表达式的返回值,所以说小括号内的function返回值等于小括 ...
- [转]高级SQL注入:混淆和绕过
############# [0×00] – 简介[0×01] – 过滤规避(Mysql)[0x01a] – 绕过函数和关键词的过滤[0x01b] – 绕过正则表达式过滤[0×02] – 常见绕过技术 ...
- 操作系统 - 死锁(Deadlock)的概述、条件、对策
资源 可抢占资源(preemptable resource)可以从拥有它的进程中抢占而不会产生任何副作用,存储器就是一类可抢占的资源.可抢占资源有时有潜在的死锁危险,通常可以通过在进程之间重新分配资源 ...
- 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章
菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...
- linux设备驱动模块引用和依赖
/modules/04 # lsmod test 787 0 - Live 0xbf010000 (PO) func 633 1 test, Live 0xbf00c000 (PO) test -&g ...
- uc伯克利人工分割图像.seg文件解析
之前看到 http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/segbench/ 提供的人工图像分割的.seg格式 ...
- sieve的objective-c实现
用obj-cl来实现前面的sieve代码貌似"丑"了不少,应该有更好的方式:比如不用Foundation或不用NSArray类,而改用其它更"底层"的类. 先把 ...