NPOI生成excel并下载
NPOI文件下载地址:http://npoi.codeplex.com/
将文件直接引用至项目中即可,,,,,
虽然网上资料很多,但有可能并找不到自己想要的功能,今天闲的没事,所以就稍微整理了一个简单的例子,希望自己在以后的项目中用得着,到时候就不用在网上查找了,直接把代码copy过来就可以啦~~~~主要是在mvc控制器里面敲的,直接贴代码了。。。。。
1、逻辑代码
public EmptyResult ExportExcle()
{
HSSFCellStyle style;
HSSFFont font;
#if DEBUG
UserInfo u = new UserInfo();
List<UserInfo> list = u.GetDate();
string url = Server.MapPath(@"\Content\File\MyBook.xls");
string sheetName = "MySheet";
#endif
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
FileStream filecreate = new FileStream(url, FileMode.Create, FileAccess.ReadWrite);
//创建工作表
HSSFSheet sheet = hssfworkbook.CreateSheet(sheetName) as HSSFSheet;
IRow row = sheet.CreateRow();
row.CreateCell().SetCellValue("用户编号");
row.CreateCell().SetCellValue("用户名");
row.CreateCell().SetCellValue("性别");
row.CreateCell().SetCellValue("年龄");
row.CreateCell().SetCellValue("电话");
row.CreateCell().SetCellValue("身份证");
//行高
row.HeightInPoints = ;
//给表头单元格设置样式(对齐方式、边框、字体、背景颜色)
List<ICell> cell = row.Cells;
style = hssfworkbook.CreateCellStyle() as HSSFCellStyle;
font = hssfworkbook.CreateFont() as HSSFFont;
font.IsBold = true;//加粗
font.FontName = "宋体";
font.Color = HSSFColor.Red.Index;//字体颜色
style.SetFont(font);
this.CellStyle(style, sheet);
style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Green.Index;
style.FillPattern = FillPattern.SolidForeground;
cell.ForEach(delegate(ICell c)
{
c.CellStyle = style;
}); //加载内容
if (list.Any())
{
style = hssfworkbook.CreateCellStyle() as HSSFCellStyle;
this.CellStyle(style, sheet);
for (int i = ; i < list.Count; i++)
{
row = sheet.CreateRow(i + );
row.HeightInPoints = ;
row.CreateCell().SetCellValue(list[i].UserId);
row.CreateCell().SetCellValue(list[i].UserName);
row.CreateCell().SetCellValue(list[i].Sex);
row.CreateCell().SetCellValue(list[i].Age);
row.CreateCell().SetCellValue(list[i].Tel);
row.CreateCell().SetCellValue(list[i].IdCard);
cell = row.Cells;
cell.ForEach(p => p.CellStyle = style);
}
}
//将流写入excel文件
hssfworkbook.Write(filecreate);
filecreate.Close(); #region 下载文件
FileStream fileopen = new FileStream(url, FileMode.Open);
byte[] bytes = new byte[(int)fileopen.Length];
fileopen.Read(bytes, , bytes.Length);
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("MyBook.xls", System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
fileopen.Close();
Response.Flush();
Response.End();
return new EmptyResult();
#endregion
}
2、单元格样式
/// <summary>
/// 样式
/// </summary>
/// <param name="style"></param>
/// <param name="sheet"></param>
private void CellStyle(HSSFCellStyle style, HSSFSheet sheet)
{
//自动换行
style.WrapText = true;
//边框
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
//对齐方式
style.Alignment = HorizontalAlignment.Center;
style.VerticalAlignment = VerticalAlignment.Center;
//设置第四列、第五列的宽度
sheet.SetColumnWidth(, * );
sheet.SetColumnWidth(, * );
}
3、数据源
private class UserInfo
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
public string Tel { get; set; }
public string IdCard { get; set; } public List<UserInfo> GetDate()
{
List<UserInfo> list = new List<UserInfo>()
{
new UserInfo{UserId=,UserName="张三",Sex="男",Age=,Tel="",IdCard=""},
new UserInfo{UserId=,UserName="李四",Sex="女",Age=,Tel="",IdCard=""},
new UserInfo{UserId=,UserName="王五",Sex="男",Age=,Tel="",IdCard=""},
new UserInfo{UserId=,UserName="赵六",Sex="女",Age=,Tel="",IdCard=""},
new UserInfo{UserId=,UserName="钱七",Sex="男",Age=,Tel="",IdCard=""},
new UserInfo{UserId=,UserName="张三",Sex="女",Age=,Tel="",IdCard=""}
};
return list;
}
}
4、前端代码
之前遇到了一个问题,因为刚开始我使用的是Ajax方式提交的,所以在浏览器上无法看到下载提示框,最后搞了半天,原来是因为提交方式不对,换成location就可以了。
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btnExportExcle").click(function () {
//var options = {
// type: 'get',
// cache: false,
// async:false,
// url: '/Index/ExportExcle',
// success: function (data) {
// }
//};
//$.ajax(options);
location = "/Index/ExportExcle";
});
});
</script>
</head>
<body>
<input type="button" value="导出Excel" id="btnExportExcle" />
</body>
</html>
5、前台页面效果

6、打开Excel

好了,就介绍到这里了,希望对大家也有所帮助~~~~
NPOI生成excel并下载的更多相关文章
- phpexcel生成excel并下载
Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...
- 使用node.js生成excel报表下载(excel-export express篇)
引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种 ...
- java动态生成excel打包下载
@SuppressWarnings("unchecked") public String batchExport() throws DBException{ @SuppressWa ...
- 使用NPOI生成Excel级联列表
目录 1 概要 1 2 磨刀不误砍柴工——先学会Excel中的操作 2 3 利用NPOI生成导入模板 7 3.1 设置workbook&sheet ...
- Asp.net MVC 简单实现生成Excel并下载
由于项目上的需求,需要导出指定条件的Excel文件.经过一翻折腾终于实现了. 现在把代码贴出来分享 (直接把我们项目里面的一部份辅助类的代码分享一下) 我们项目使用的是Asp.Net MVC4.0模式 ...
- .net利用NPOI生成excel文件
整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过.这个是一个完整的过程. 首先是已经查找好的数据,这 ...
- 后台生成excel前端下载
后台生成Excel时前端获取下载 Controller控制器: package com.example.test.controller; import com.example.test.common. ...
- Aspose.Cell和NPOI生成Excel文件
1.使用Aspose.Cell生成Excel文件,Aspose.Cell是.NET组件控件,不依赖COM组件 1首先一点需要使用新建好的空Excel文件做模板,否则容易产生一个多出的警告Sheet 1 ...
- npoi生成excel流并在客户端下载(html+后台 )
//前端页面 <body> <input type="button" value="导出Excel" class="button&q ...
随机推荐
- Kotlin入门(21)活动页面的跳转处理
Activity的活动页面跳转是App最常用的功能之一,在前几章的demo源码中便多次见到了,常常是点击界面上的某个按钮,然后跳转到与之对应的下一个页面.对于App开发者来说,该功能的实现非常普通,使 ...
- C#-类(九)
类的定义 类是描述具有相同特征与行为的事物的抽象,类内部包含类的特征和类的行为 类支持继承 类的定义是关键字class为标志 类的格式 访问标识符 class 类名 { 类主体 } 访问标识符:指定了 ...
- c/c++叉树的创建与遍历(非递归遍历左右中,不破坏树结构)
二叉树的创建与遍历(非递归遍历左右中,不破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: ...
- Linux shell编写端口扫描脚本
Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...
- Linux 小知识翻译 - 「syslog」
这次聊聊「syslog」. 上次聊了「日志」(lgo).这次说起syslog,一看到log(日志)就明白是怎么回事了.syslog是获取系统日志的工具. 很多UINIX系的OS都采用了这个程序,它承担 ...
- 从此使用linux系统,但是QQ是必不可少的!!该篇文章方法成功!!!已验证!!!!!
一开始,我在Ubuntu14.04下安装的QQ版本是WineQQ2013SP6-20140102-Longene, 但后来发现这个版本QQ在linux下问题很多,比如不能用键盘输入密码,QQ表情使用失 ...
- input reset 重置时间
经验规律,301毫秒. function autoFormatMoney() { if (!this.value.length) {return} var num = parseFloat(this. ...
- (转)Spring Boot(七):Mybatis 多数据源最简解决方案
http://www.ityouknow.com/springboot/2016/11/25/spring-boot-multi-mybatis.html 说起多数据源,一般都来解决那些问题呢,主从模 ...
- Problem UVA11134-Fabled Rooks(贪心)
Problem UVA11134-Fabled Rooks Accept: 716 Submit: 6134Time Limit: 3000mSec Problem Description We w ...
- [matlab] 7.快速搜索随机树(RRT---Rapidly-exploring Random Trees) 路径规划
RRT是一种多维空间中有效率的规划方法.它以一个初始点作为根节点,通过随机采样增加叶子节点的方式,生成一个随机扩展树,当随机树中的叶子节点包含了目标点或进入了目标区域,便可以在随机树中找到一条由从初始 ...