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并下载的更多相关文章

  1. phpexcel生成excel并下载

    Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...

  2. 使用node.js生成excel报表下载(excel-export express篇)

    引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种 ...

  3. java动态生成excel打包下载

    @SuppressWarnings("unchecked") public String batchExport() throws DBException{ @SuppressWa ...

  4. 使用NPOI生成Excel级联列表

    目录 1    概要    1 2    磨刀不误砍柴工——先学会Excel中的操作    2 3    利用NPOI生成导入模板    7 3.1    设置workbook&sheet   ...

  5. Asp.net MVC 简单实现生成Excel并下载

    由于项目上的需求,需要导出指定条件的Excel文件.经过一翻折腾终于实现了. 现在把代码贴出来分享 (直接把我们项目里面的一部份辅助类的代码分享一下) 我们项目使用的是Asp.Net MVC4.0模式 ...

  6. .net利用NPOI生成excel文件

    整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过.这个是一个完整的过程. 首先是已经查找好的数据,这 ...

  7. 后台生成excel前端下载

    后台生成Excel时前端获取下载 Controller控制器: package com.example.test.controller; import com.example.test.common. ...

  8. Aspose.Cell和NPOI生成Excel文件

    1.使用Aspose.Cell生成Excel文件,Aspose.Cell是.NET组件控件,不依赖COM组件 1首先一点需要使用新建好的空Excel文件做模板,否则容易产生一个多出的警告Sheet 1 ...

  9. npoi生成excel流并在客户端下载(html+后台 )

    //前端页面 <body> <input type="button" value="导出Excel" class="button&q ...

随机推荐

  1. 编程一小时 code.org [六一关注]

    编程一小时活动的组织者是Code.org, 它是一个面向公众的公益组织,致力于在更多的学校推广计算机科学教育,并为女性和就业率低的有色人种学生学习计算机的机会.同时,一个空前强大的合作伙伴联盟也在支持 ...

  2. [20170607]再论Private Strand Flush Not Complete.txt

    [20170607]再论Private Strand Flush Not Complete.txt --//曾经跟zergduan有过讨论,链接www.itpub.net/thread-2065703 ...

  3. 语句调优基础知识-set statistics profile on

    set statistics profile on 获取语句真实的执行计划信息 set statistics profile on go select distinct Productid,unitp ...

  4. 预热一下吧《实现Redis消息队列》

    应用场景 为什么要用redis?二进制存储.java序列化传输.IO连接数高.连接频繁 一.序列化 这里编写了一个java序列化的工具,主要是将对象转化为byte数组,和根据byte数组反序列化成ja ...

  5. Windows四大傻X功能——那些拖慢系统性能的罪魁祸首

    最近新装了一个PC,配置还算蛮高,i7的CPU,8G内存,2T的硬盘,于是小心翼翼地装了一个干净的正版Win7,但是发现居然开机明显卡?所以做了些研究,发现即使全新安装的正版windows,居然也有些 ...

  6. centos下mysql授予权限提示ERROR 1133 (42000): Can't find any matching row in the user table

    错误: 给mysql对应的用户授予权限的时候提示报错: 解决方法: 后面才知道原来是同事这边新增了用户没有flush grant all privileges on *.* to 'user'@'%' ...

  7. celery 定时任务

    用celery定时任务,定时删除文件夹 tasks.py from celery import Celery import os import shutil app = Celery('demo') ...

  8. 分布式UUID的生成

    背景 最近有个项目:涉及到分布式计算,tps相对较高,流程之间是异步调用,流程间相互依赖的对象(涉及记录外键)需要持久化.这就衍生出了需要在JVM中快速生成分布式UUID的问题 方案 1.通过JDK标 ...

  9. 转:Java中的String,StringBuilder,StringBuffer三者的区别

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  10. VsCode放大缩小

    如图:vscode界面突然缩小了 通过快捷键 ctrl+shift+ + 放大  ctrl+shift+ - 缩小