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 ...
随机推荐
- Elasticsearch-精确查找
转译:(https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_exact_values.html#_finding_ ...
- SqlServer 线下讲座
2017年有幸在某互联网公司及其子公司进行了一次技术分享性质的讲座,讲座内容主要针对sqlserver 2017以及azure sql 的一些技术特性,进一步展示sql server 及其相关产品的新 ...
- SQL SERVER的锁机制
SQL SERVER的锁机制(一)——概述(锁的种类与范围) SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源) SQL SERVER的锁机制(三)——概述(锁与事务隔离级别) ...
- UGUI组件之快速消息提示(飘字)
效果预览 使用情景 几乎每一个游戏都会有这种飘字提示,实现起来并不复杂, 我把它做了一个组件. 开箱即可使用,无需二次开发,如果效果不满意,开放源码,方便进行调优. 组件源码 核心代码 每次将飘字的请 ...
- 排序算法之希尔排序的思想以及Java实现
1 基本思想 shell排序又称之为缩小增量排序,基本思想是,先将待排序序列分割成若干个特殊的子表,分别进行插入排序,当整个表中元素"基本有序"时,再对全体记录进行一次直接插入排序 ...
- celery 定时任务
用celery定时任务,定时删除文件夹 tasks.py from celery import Celery import os import shutil app = Celery('demo') ...
- JavaScript -- 时光流逝(一):数据类型,变量,类型转换,函数
JavaScript -- 知识点回顾篇(一):数据类型,变量,类型转换,函数 1. 数据类型 Boolean:值类型,布尔(逻辑)只能有两个值:true 或 false. Number:值类型,Ja ...
- February 12th, 2018 Week 7th Monday
One man's fault is another man's lesson. 前车之覆,后车之鉴. We make mistakes every day, large or small, fail ...
- Call to localhost/127.0.0.1:9000 failed on connection exception:java.net.ConnectException的解决方案
Call to localhost/127.0.0.1:9000 failed on connection exception:java.net.ConnectException的解决方案 作者:凯鲁 ...
- IDEA用maven创建springMVC项目和配置(XML配置和Java配置)
1.DEA创建项目 新建一个maven project,并且选择webapp原型. 然后点击next 这里的GroupId和ArtifactID随意填写,但是ArtifactID最好和你的项目一名一样 ...