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 ...
随机推荐
- git 入门教程之本地和远程仓库的本质
本地仓库和远程仓库在本质上没有太大区别,只不过一个是本地电脑,一个是远程电脑. 远程仓库不一定非得是 github 那种专门的"中央服务器",甚至局域网的另外一台电脑也可以充当&q ...
- spring学习总结——介绍
介绍:以下博客的内容都是依据<spring实战4>这本书.spring4.0 来总结. 一.spring作用 Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底 ...
- 你的leader还在考核你的千行代码Bug率吗?
管理学大师德鲁克说:你如果你无法度量它,就无法管理它.要想做有效的管理,就很难绕开度量的问题. 软件开发的过程或者技术团队的管理也存在着如何去合理的度量效率的问题.而度量是把双刃剑,度量具有极强的引导 ...
- parent.fraInterface.xxxxxx
fraInterface是自己定义的一个frame的名字,是通过在frame标签中设置name属性实现的.以上那句代码就是通过parent这个公共接口在各个frame间,也就是调用拥有同一个父亲的名为 ...
- KMP算法详解-彻底清楚了(转载+部分原创)
引言 KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置.该算法是三位大牛:D.E.Knuth.J.H.Morris和V.R.Pratt同时发现的,以其名字首字 ...
- python第一百零九天---Django 4
session :1. Session 基于Cookie做用户验证时:敏感信息不适合放在cookie中 a. Session原理 Cookie是保存在用户浏览器端的键值对 Session是保存在服务器 ...
- Android项目的targetSDK>=23,在低于Android6.0的部分测试机(类似华为)上运行时出现的系统权限问题
相信大家对Android6.0以上的动态权限已经有所了解,很多童鞋也已经跃跃欲试地将自己项目的targetSDK升级到了23及其以上,很不幸的是我也成为了其中一员,然而我还是图样图森破了,升级之后的问 ...
- 【gdoi2018 day2】第二题 滑稽子图
题意: 给出一棵树.设\(E\)表示边集,\(V\)表示点集,\(S\)为\(V\)的一个子集. \(f(S)=|(u,v)|(u,v)\in E \ \&\&\ u\in V\ \& ...
- go基础之数组和切片
数组 数组的定义: 数组是具有固定长度并拥有零个或者多个相同数据类型元素的序列 定义一个数组的方法:var 变量名[len] type 例子:var a[5] int //3个整数的数组var a[5 ...
- Java 8 新特性:5-Supplier、IntSupplier、BinaryOperator接口
(原) 这个接口很简单,里面只有一个抽象方法,没有default和静态方法. /* * Copyright (c) 2012, 2013, Oracle and/or its affiliates. ...