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 ...
随机推荐
- java的优点和误解 《java核心技术卷i》第一章
<java核心技术卷i>第一章主要内容包括三点: 1:Java白皮书的关键术语:描述Java的十一个关键字: 2:Java applet 3 :关于Java的常见误解 1:第一章:Ja ...
- IntelliJ IDEA常用快捷键(一)
Ctrl+J 键常用的组合 psvm:public static void main(String[] args) { } Serr: System.err.println("") ...
- web前端(1)——了解什么是前端,以及与后端的关系
简介 1.什么是web前端 说这个之前,我们先了解web前端工程师是干什么的,百度百科的解释: Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/Flash等各种Web ...
- Windows四大傻X功能——那些拖慢系统性能的罪魁祸首
最近新装了一个PC,配置还算蛮高,i7的CPU,8G内存,2T的硬盘,于是小心翼翼地装了一个干净的正版Win7,但是发现居然开机明显卡?所以做了些研究,发现即使全新安装的正版windows,居然也有些 ...
- LeetCode算法题-Arranging Coins(Java实现)
这是悦乐书的第229次更新,第241篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第96题(顺位题号是441).您想要以楼梯形状形成总共n个硬币,其中每个第k行必须具有恰 ...
- js中图片上传,多次上传同一张不生效
在做图片上传的功能时, 使用删除功能删除了一张图片, 然后想重新上传原来删除的图片, 结果预览不显示, 也不能上传成功 解决办法, 在删除方法里置空input $("#id").f ...
- java操作elasticsearch实现批量添加数据(bulk)
java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...
- 超简单的gif图制作工具
测试成功了: 软件灵者Gif录制1.0 使用方法注意: 扩展: 安卓端想要制作gif可参考此方法(还没测试):https://blog.csdn.net/u012604745/article/deta ...
- js开发打印证书功能
最近突然被加了要打印证书的功能的需求.其实打印功能很简单,直接调用window.print()就可以打印,只是这是最基本的打印,会打印当前页面的所有元素,而我们要的是局部打印,实现方法: 1.设置好开 ...
- 16.ajax_case04
# 抓取金色财经快讯接口 # https://www.jinse.com/lives import requests import json header = { 'Accept': 'text/ht ...